奇怪的LINQ行为 - ToList返回空集

时间:2009-09-22 01:26:37

标签: linq entity-framework

我无法理解为什么resultSet2是空的!只有第一个断言传递!

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);

谢谢!

阿什利

1 个答案:

答案 0 :(得分:3)

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

这可能与你在数据库中的整理有关吗?第一个示例将Contains(“bad”)方法转换回SQL,SQL可能不区分大小写并返回包含“BAD”或“Bad”的行。第二个例子不区分大小写。

看看RiskRating的值在数据库中的回复以及执行的SQL查询是什么样的,这很有意思。