如何在c# LINQ查询中测试数据表字段是否为NULL ?
本文关键字:字段 数据表 是否 NULL 测试数据 测试 LINQ 查询 | 更新日期: 2023-09-27 18:14:55
我有一个c# LINQ,我正在运行一个数据表。查询方式如下:
var results = from myRow in dtDetails.AsEnumerable()
where
myRow.Field<DateTime>("ddceffect") > DateTime.Today.AddDays(-7)
&& myRow.Field<int>("ddcamtproc") == 0
select myRow;
字段"ddcamrproc"为空
我得到以下异常:
myRow.Field<int>("ddcamtproc")' threw an exception of type 'System.InvalidCastException'
在执行查询的其余部分之前,如何更改LINQ查询以测试字段是否为null ?
谢谢,JohnB
Field
方法支持可空类型:
... && myRow.Field<int?>("ddcamtproc") == 0
你也可以试试这个方法。
var results = dtDetails.AsEnumerable()
.Where(x => x.ddceffect > DateTime.Today.AddDays(-7) &&
x.ddcamtproc.HasValue && x.ddcamtproc.Value == 0);
或
var results = dtDetails.AsEnumerable()
.Where(x => x.ddceffect.Substract(DateTime.Today) == -7
&& x.ddcamtproc.HasValue && x.ddcamtproc.Value == 0);
因为int是从system派生的。Struct,所以你需要写int?in Field to Field<int?>("ddcamtproc") == 0
无论在c#中使用任何值类型。如果它接受空值,您可以使用可空类型(如int?)