2009-09-22 53 views
1

我不明白爲什麼resultSet2是空的!只有第一個斷言通過!奇怪的LINQ行爲 - ToList返回空集

List<Tree> resultSet1 = this.datacontext.Trees.Where(t=>t.RiskRating.Contains("bad")).ToList(); 

Assert.IsTrue(resultSet1.count() == 3); 


List<Tree> resultSet2 = this.datacontext.Trees.ToList().Where(t=>t.RiskRating.Contains("bad")).ToList(); 

Assert.IsTrue(resultSet2.count() == 3); 

謝謝!

Ashley

回答

3

this.datacontext.Trees.ToList().Count()返回什麼?

難道這是你的數據庫整理回來的問題嗎?第一個示例會將Contains(「bad」)方法轉換回SQL,後者可能不區分大小寫,並返回包含「BAD」或「Bad」的行。第二個例子不區分大小寫。

看看RiskRating的值在數據庫中的返回值以及執行的SQL查詢的外觀是很有趣的。

+0

啊你是對的 - 它歸結爲區分大小寫! 謝謝馬特! – 2009-09-22 01:40:18

+0

您是否知道無論如何不區分大小寫在ObjectQuery上包含? – 2009-09-22 01:40:54

+1

在變量之前先對變量執行一次... – 2009-09-22 01:46:18