Рассмотрим этот код:
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, а затем использует LINQ-to-Objects для Count
, Sum
и Average
.Вместо этого, когда я делаю это в LINQPad, я вижу, что один и тот же запрос выполняется три раза.Если я заменю .AsEnumerable()
на .ToList()
, он будет запрошен только один раз.
Я что-то упускаю из-за того, что AsEnumerable
есть / делает?