Consider this code:
var query = db.Table
.Where(t => SomeCondition(t))
.AsEnumerable();
int recordCount = query.Count();
int totalSomeNumber = query.Sum();
decimal average = query.Average();
Assume query
takes a very long time to run. I need to get the record count, total SomeNumber
's returned, and take an average at the end. I thought based on my reading that .AsEnumerable()
would execute the query using LINQ-to-SQL, then use LINQ-to-Objects for the Count
, Sum
, and Average
. Instead, when I do this in LINQPad, I see the same query is run three times. If I replace .AsEnumerable()
with .ToList()
, it only gets queried once.
Am I missing something about what AsEnumerable
is/does?