我有一块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
答案 0 :(得分:2)
Field
method支持可以为空的teypes:
... && myRow.Field<int?>("ddcamtproc") == 0
答案 1 :(得分:0)
您也可以尝试这种方式。
[INFO] Scanning for projects...
[ERROR] [ERROR] Could not find the selected project in the reactor: rest @
[ERROR] Could not find the selected project in the reactor: rest -> [Help 1]
OR
var results = dtDetails.AsEnumerable()
.Where(x => x.ddceffect > DateTime.Today.AddDays(-7) &&
x.ddcamtproc.HasValue && x.ddcamtproc.Value == 0);
答案 2 :(得分:0)
由于int是从system.struct派生的,所以你需要编写int?在字段Field<int?>("ddcamtproc") == 0
在C#中,您使用的是任何值类型。如果它取空值你可以使用可空类型(如int?)