首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ上的mscorlib错误

LINQ上的mscorlib错误
EN

Stack Overflow用户
提问于 2014-04-15 12:49:48
回答 1查看 198关注 0票数 0

在下面的查询中,我得到了一个InvalidOperation on mscorlib.dll错误,在我的一生中都找不到原因。

这是我正在填写的那个类;

代码语言:javascript
复制
Public Class ProjectionPerformance
    Public SymbolId As Long
    Public Name As String
    Public ProjectionDate As String
    Public ActualRange As Double
    Public ProjectedRange As Double
End Class

这些类型与表中的类型匹配,但我转换为字符串的日期除外。

下面是LINQ查询的函数

代码语言:javascript
复制
  Public Shared Function GetRangeProjectionPerformance(Optional daysToRetrieve As Integer = 100) As Dictionary(Of Long, List(Of ProjectionPerformance))

    Dim todaysDate As Date = DateTime.Now.Date
    Dim lookbackDate As Date = todaysDate.AddDays(daysToRetrieve * -1)

    Using ctx As New ProjectionsEntities

        Dim query = (From d In ctx.projections
                    Where d.SymbolId <= 42 AndAlso d.Date >= lookbackDate
                    Join t In ctx.symbols On d.SymbolId Equals t.Id
                    Let actualRange = d.ActualHigh - d.ActualLow
                    Let projectedRange = d.HighProjection - d.LowProjection
                    Select New With {
                    d.Date,
                    d.SymbolId,
                    t.Name,
                    projectedRange,
                    actualRange}).GroupBy(Function(o) o.SymbolId).ToDictionary(Function(p) p.Key,
                                Function(x) x.Select(Function(y) New ProjectionPerformance() With {
                                    .SymbolId = y.SymbolId,
                                    .ProjectionDate = y.Date.ToString(),
                                    .Name = y.Name,
                                    .ActualRange = y.actualRange,
                                    .ProjectedRange = y.projectedRange
                                }).ToList())


        Return query
    End Using
End Function

我在LINQ查询的这一部分上得到了这个错误(我假设该部分在VS2013中以绿色突出显示)

代码语言:javascript
复制
 Function(x) x.Select(Function(y) New ProjectionPerformance() With {

我是否必须检索实际字段值并消除Let语句,并在Dictionary的List函数中执行calcs?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-15 14:13:05

基于您的评论,我怀疑问题在于您试图将空值赋值到ProjectionPerformance中的双重属性。如果您按以下方式更改代码,它应该可以工作:

代码语言:javascript
复制
Dim query = (From d In ctx.projections
                Where d.SymbolId <= 42 AndAlso d.Date >= lookbackDate
                Join t In ctx.symbols On d.SymbolId Equals t.Id
                Let actualRange = d.ActualHigh - d.ActualLow
                Let projectedRange = d.HighProjection - d.LowProjection
                Select New With {
                d.Date,
                d.SymbolId,
                t.Name,
                projectedRange,
                actualRange}).GroupBy(Function(o) o.SymbolId).ToDictionary(Function(p) p.Key,
                            Function(x) x.Select(Function(y) New ProjectionPerformance() With {
                                .SymbolId = y.SymbolId,
                                .ProjectionDate = y.Date.ToString(),
                                .Name = y.Name,
                                .ActualRange = If(y.actualRange, 0.0),
                                .ProjectedRange = y.projectedRange
                            }).ToList())

为了在运行程序之前发现这些错误,您应该将选项严格设置为ON (无论是在项目级别还是文件级别)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23084241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档