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テーブルに Someid の Ref 値を持つレコードが常に存在するとは限らないことです。そのため、クエリは次のエラーをスローします。

他の人がエラーをキャッチしてこの問題を回避しているのを見てきましたが、これを読んで、エラー情報に従って、クエリまたはいくつかのフィールドをキャストする解決策 (VB.NET) があるはずですnull許容型へのクエリ?

エラーは次のとおりです。

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() は int を扱っていますが、本当に欲しいのは nullable int です。

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

ここを参照してください: null 許容合計を使用した Linq クエリ

于 2012-06-01T03:19:32.243 に答える