我不理解linq-to-sql错误,它似乎涉及到linq-to-sql是如何"在幕后"工作的
我有一个linq sql查询查找值在一个日期范围内。所有查询的字段在底层DB中都没有空值。如果开始日期和结束日期之间的间隔小于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到SQL忽略时间值吗?2013年1月5日数据库中的所有日期时间都是相等的,而不考虑相关的时间值吗?这是我对这个错误的解释,因为如果linq to sql忽略时间值,那么不可能有大于1/5/13且小于1/6/13的值,因此生成消息:空对象必须有错误。
怎么回事?
问题是,如果没有整数值,这个和就不起作用。Sum可以毫无问题地用于整数数组,或者如果您传入一个解析属性的匿名函数,则该属性应该是整数。
此外,对结果求和是没有意义的。
。Sum用于对数组中的所有整数求和,而count只是对数组中的所有项进行计数。