0

看过一些 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.

4

1 回答 1

0

您的 Sum() 正在处理整数,而您真正想要的是一个可为空的整数。

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

于 2012-06-01T03:19:32.243 回答