0

我不明白 linq-to-sql 错误似乎涉及 linq to sql 如何“在后台”工作。

我有一个 linq to sql 查询来查找日期范围内的值。查询的所有字段在基础数据库中都没有空值。如果开始日期和结束日期相隔不到 48 小时,则查询返回错误,可为空的对象必须有一个值

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 小时时(在下面的示例中,第二行不同),它不会抛出错误:

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 日数据库中的所有日期时间是否均等?这是我对这个错误的解释,因为如果 linq to sql 忽略时间值,则不会有大于 1/5/13 和小于 1/6/13 的可能值,因此生成消息:可为空的对象必须有错误.

这是怎么回事?

4

1 回答 1

0

问题是,如果你没有整数值,那么这个总和就不起作用。sum 可以毫无问题地用于整数数组,或者如果您传入一个匿名函数来解析应该是整数的属性。

此外,对结果求和是没有意义的。

.sum 用于对数组中的所有整数求和,而 count 仅计算数组中的所有项目。

于 2013-01-09T18:00:50.930 回答