1
我有LINQ的問題(使用EF - 4.3.1.0)使用以下:LINQ的使用可爲空的時間字段
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進來作爲一個字符串,所以我不得不將其轉換爲可空約會時間。分析日期也一樣。
我感到驚訝的是,我的公司ID爲13. dtcollected的空值。並且已經在表中使用了dtanalyzed的值,所以我期望doesexist返回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的空值? 我做錯了什麼。
LINQ到什麼地步?這看起來像是一個在4.5中修復的EF錯誤 – SLaks
是的,pwDateCollected在表中爲空,並且在特定記錄的c#中dtcollected爲null。 –
是的,EF不能處理的查詢,其中 == 其中兩個爲NULL。這應該被翻譯爲 IS NULL,但它轉換爲 = NULL,它不會給出正確的結果。 –
Maarten