奇怪.Where()行为.有人有解释吗?

Pet*_*rdk 2 c# linq entity-framework where

原版的

我不明白为什么Where()子句在最后一个例子中没有给我正确的结果.
这没有什么不同吗?为什么C#表现不同?

transactions = IEnumerable<Transaction> //pseudocode 

//This works: It gives me the transaction I need.
DateTime startDate = DateTime.Parse(parameter.Constraint); 
transactions = transactions.Where(T => T.date >= startDate);  

//This doesn't work... No actual code changed, only the way of writing it...
//I get 0 results.
 transactions = transactions.Where(T => T.date >= DateTime.Parse(parameter.Constraint));
Run Code Online (Sandbox Code Playgroud)

编辑

好的,确实有必要提到使用Entity Framework加载事务.

transactions = this.db.Include("blablabla").OrderByDescending(T => T.date);
Run Code Online (Sandbox Code Playgroud)

也许这就是为什么它做得很奇怪?由于实体Linq的工作方式?

mqp*_*mqp 5

这可能实际发生的唯一方法是,如果你正在修改parameterparameter.Constraint以某种方式进行枚举transactions.因此,如果你不这样做,看看你是否真的在观察你认为你正在观察的东西.

原则上,这应该工作正常.

编辑:你可能会对你的观察感到困惑的一个显而易见的方法是,如果你没有检查(实际评估)懒惰Where枚举的结果,直到稍后,parameter改变时.如果你把它ToArray放在最后立即评估它,你可能会发现它"神奇地"修复了它自己.