VB.NET LINQ to EF Sum函数没有返回记录时出错

时间:2012-06-01 02:37:24

标签: vb.net linq-to-entities

已经看过C#的一些解决方案,但不知道如何解决VB.NET中的问题。

查询:

Dim Query = (From t In myEntities.Bookings
Where(t.Ref = Someid)
Select t.People).Sum()

t.Ref字段为Int,因此t.People

SomeId值是相关表的主键。此问题是Bookings表中的记录并不总是具有Ref值为Someid - 因此查询会引发以下错误。

我已经看到其他人已经解决了这个错误的问题,但从阅读这个和根据错误信息似乎应该有一个解决方案(在VB.NET中)来强制转换查询或一些查询中的字段为可空类型?

错误如下:

The cast to value type 'Int32' failed because the materialized value is null. Either the result type's generic parameter or the query must use a nullable type.

1 个答案:

答案 0 :(得分:0)

你的Sum()处理的是int,你真正想要的是一个可以为空的int。

Dim Query = (From t In myEntities.Bookings Where(t.Ref = Someid) Select t.People).Sum(Function(x) CType(x, Integer?))

见这里:Linq query with nullable sum