C#懒惰问题

Yip*_*Yay 5 c# linq

什么是设计应用,有力地依靠懒评价中常用的方法C#(LINQ,IEnumerable,IQueryable,...)?

现在我通常尝试使用yield returnLINQ查询尽可能地使每个查询变得懒惰,但是在运行时这通常会导致"过于懒惰"的行为,当每个查询从它开始构建时显然会导致严重的视觉性能下降.

我通常做的是将ToList()投影操作员放在某处缓存数据,但我怀疑这种方法可能不正确.

从一开始就设计这种应用程序的适当/常用方法是什么?

Fel*_*man 4

我发现将每个 IEnumerable 分为三个类别之一很有用。

  1. 快速的 - 例如列表和数组
  2. 慢的 - 例如数据库查询或繁重的计算
  3. 非确定性的 - 例如 list.Select(x => new { ... })

对于类别 1,我倾向于在适当的时候保留具体类型,数组或 IList 等。对于类别 3,这些最好保留在方法内,以避免难以发现的错误。然后我们有类别 2,和往常一样,在优化性能时,首先进行测量以找到瓶颈。