我遇到了一個linq-to-sql的奇怪問題。在下面的例子中,Linq where列==(空引用)與列== null不一樣
var survey = (from s in dbContext.crmc_Surveys
where (s.crmc_Retail_Trade_Id == tradeId) && (s.State_.Equals(state))
select s).First();
如果tradeId爲空,它不表現爲,如果我指定的空明確這樣代替,
var survey = (from s in dbContext.crmc_Surveys
where (s.crmc_Retail_Trade_Id == null) && (s.State_.Equals(state))
select s).First();
這是我所期望的行爲。實際上它不會返回任何東西,除非這兩個值都是非空的。我無法弄清楚如何完成幾個不同的linq查詢。有任何想法嗎?
是的,我想這是一個明顯的答案。但是詢問頭腦想要知道爲什麼常量null與指向null的變量不同。 – Boog
我懷疑Joel Coehoorn是正確的,你的問題中的第二種情況被轉換爲直接指定null的sql查詢。 – jball
這似乎是微軟的LINQ解析器不妥善處理空對象引用一個非常大的缺陷,甚至錯誤,但我相信你的話了吧。 – Boog