gpt4 book ai didi

c# - 奇怪的 .Where() 行为。有人有解释吗?

转载 作者:行者123 更新时间:2023-11-30 19:22:03 25 4
gpt4 key购买 nike

原创

我不明白为什么 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));

编辑

好的,提到事务是使用 Entity Framework 加载的确实很重要。

transactions = this.db.Include("blablabla").OrderByDescending(T => T.date);

也许这就是它表现怪异的原因?由于 Entity Linq 的工作方式?

最佳答案

这可能实际发生的唯一方法是,如果您在枚举 transactions 时以某种方式修改 parameterparameter.Constraint .因此,如果您没有这样做,请看看您是否真的在观察您认为自己在观察的东西。

原则上,这应该可以正常工作。

编辑:您可能会对自己的观察感到困惑的一个明显方法是,如果您直到稍后才检查(实际评估)惰性 Where 枚举的结果,当 parameter 已更改。如果您将 ToArray 放在末尾以立即对其求值,您可能会发现它“神奇地” self 修复。

关于c# - 奇怪的 .Where() 行为。有人有解释吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1793030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com