0

linq to sql が「ボンネットの下」でどのように機能するかに関係しているように見える linq-to-sql エラーがわかりません。

日付範囲内の値を探す linq to sql クエリがあります。照会されたすべてのフィールドは、基になる DB に null 値がありません。開始日と終了日の差が 48 時間以内の場合、クエリはエラーを返します。nullable object must have value .

Dim startDate As Date = New Date(2013, 1, 5, 0, 0, 1)
Dim endDate As Date = New Date(2013, 1, 6, 23, 59, 59) //date interval less than 48 hours
Dim count As Integer = (From l In myDB.myTable Where l.LabName = labToCheck And l.SuccessfulImport = True And l.DateProcessed > startDate And l.DateProcessed < endDate Select l.Epi).Sum //Nullable object must have a value.

一方、日付が 48 時間以上離れている場合 (以下の例では、2 行目が異なります)、エラーはスローされません。

Dim startDate As Date = New Date(2013, 1, 5, 0, 0, 1)
Dim endDate As Date = New Date(2013, 1, 7, 23, 59, 59) //date interval more than 48 hours
Dim count As Integer = (From l In myDB.myTable Where l.LabName = labToCheck And l.SuccessfulImport = True And l.DateProcessed > startDate And l.DateProcessed < endDate Select l.Epi).Sum

どうしたの?LINQ to SQL は時間値を無視しますか? 関連する時間値に関係なく、2013 年 1 月 5 日の DB 内のすべての日時は同等ですか? これがこのエラーの私の解釈です。linq to sql が時間の値を無視すると、1/5/13 よりも大きく 1/6/13 よりも小さい可能性のある値がないため、次のメッセージが生成されます: nullable object must have error .

どうしたの?

4

1 に答える 1

0

問題は、整数値がない場合、その合計が機能しないことです。sum は、整数配列に対して問題なく使用できます。または、整数になるはずのプロパティを解決する無名関数を渡す場合にも使用できます。

さらに、結果を合計しても意味がありません。

.sum は配列内のすべての整数を合計するためのものですが、 count は配列内のすべての項目をカウントするだけです。

于 2013-01-09T18:00:50.930 に答える