【发布时间】:2014-04-15 23:27:39
【问题描述】:
我在以下查询中收到 InvalidOperation on mscorlib.dll 错误,我终其一生都无法弄清楚原因。
这是我用来填充 List(Of ) 的类;
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 查询的函数
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 中以绿色突出显示)
Function(x) x.Select(Function(y) New ProjectionPerformance() With {
我是否必须检索实际字段值并消除 Let 语句并在 Dictionary 调用的 List 函数中进行计算?
【问题讨论】:
-
InvalidOperationException的确切错误信息是什么? -
在 mscorlib.dll 中发生 System.InvalidOperationException 类型的第一次机会异常
-
是否存在带有更详细消息的 InnerException?把
Function(y) New Proj...改成Function(y) y会有帮助吗(不是说这是想要的结果,而是为了找出错误)? -
没有更多细节。我会尝试更改以查看是否有更多详细信息
-
实际上在 mscorlib 错误下,它说 Additional Information: Nullable object must have a value....这是因为如果这些市场,某些日期的实际高值和实际低值可能为空因假期或其他原因而关闭