数据集中的LINQ null日期比较

时间:2011-08-26 11:12:06

标签: .net vb.net linq

我有DataSet我需要过滤其中一个日期列不为空的集合。

你如何在LINQ中使用这个术语?

这是我目前所做的,但w.CompletedDate子句中的Where字段存在编译器错误。

Dim completed = From ins In InspectionDataset.Inspection.AsEnumerable _
    Where (Function(w) w.CompletedDate IsNot Nothing) _
    Order By ins.Field(Of DateTime)("UpdatedDate")

我也尝试过以下方式,但编译器不允许进行DBNull比较。

Dim completed = From ins In Inspection.AsEnumerable _
    Where ins.Field(Of DateTime)("CompletedDate") <> DBNull.Value _
    Order By ins.Field(Of DateTime)("UpdatedDate")

1 个答案:

答案 0 :(得分:2)

Field extension method上的DataRowExtensions class不会返回DBNull.Value数据库中的空值(这是您期望使用ADO.NET),而是检查该值,如果为null,则返回Nothing。

那就是说,你的查询应该是:

Dim completed = From ins In Inspection.AsEnumerable _
    Where Not (ins.Field(Of Nullable(Of DateTime))("CompletedDate") Is Nothing) _
    Order By ins.Field(Of DateTime)("UpdatedDate")