我对使用以下内容的 LINQ(使用 EF - 4.3.1.0)有疑问:
DateTime? dtcollected = DateTime.TryParse(dateCollected, out dateVal) ? dateVal : (DateTime?)null;
DateTime? dtanalyzed = DateTime.TryParse(dateanalyzed, out dateVal) ? dateVal : (DateTime?)null;
var doesexist = (from pw in dbContext.WtTbl
where pw.CompanyId == 13
&& pw.DateCollected == dtcollected
&& pw.DateAnalyzed == dtanalyzed
select pw).Any();
请注意,dateCollected 以字符串形式出现,因此我必须将其转换为可为空的 DateTime。日期分析也是如此。
令我震惊的是,我的 companyId 为 13。dtcollected 为空值。dtanalyzed 的值已经在表中,所以我希望 doexist 返回 true,但它返回 false。
如果我注释掉
var doesexist = (from pw in dbContext.WtTbl
where pw.CompanyId == 13
// && pw.DateCollected == dtcollected
&& pw.DateAnalyzed == dtanalyzed
select pw).Any();
或者说:
var doesexist = (from pw in dbContext.WtTbl
where pw.CompanyId == 13
&& pw.DateCollected == null
&& pw.DateAnalyzed == dtanalyzed
select pw).Any();
然后我得到一个真实的。为什么它无法理解 dtcollected 的 null 值?难道我做错了什么。