【发布时间】:2010-08-02 16:43:53
【问题描述】:
考虑这段代码:
var query = db.Table
.Where(t => SomeCondition(t))
.AsEnumerable();
int recordCount = query.Count();
int totalSomeNumber = query.Sum();
decimal average = query.Average();
假设query 需要很长时间才能运行。我需要获取记录数,总共返回SomeNumber,并在最后取平均值。根据我的阅读,我认为.AsEnumerable() 将使用 LINQ-to-SQL 执行查询,然后对 Count、Sum 和 Average 使用 LINQ-to-Objects。相反,当我在 LINQPad 中执行此操作时,我看到相同的查询运行了 3 次。如果我用.ToList() 替换.AsEnumerable(),它只会被查询一次。
我是否遗漏了 AsEnumerable 是什么/做什么?
【问题讨论】:
-
了解
AsEnumerable()行为的一个非常有用的问题
标签: c# .net linq linq-to-sql