xem xét mã này:Tôi có hiểu nhầm LINQ to SQL .AsEnumerable()?
var query = db.Table
.Where(t => SomeCondition(t))
.AsEnumerable();
int recordCount = query.Count();
int totalSomeNumber = query.Sum();
decimal average = query.Average();
Giả query
mất một thời gian rất dài để chạy. Tôi cần tính số lượng bản ghi, tổng số tiền trả về là SomeNumber
và mất trung bình vào cuối. Tôi nghĩ dựa trên đọc của tôi rằng .AsEnumerable()
sẽ thực hiện truy vấn bằng LINQ-to-SQL, sau đó sử dụng LINQ-to-Objects cho Count
, Sum
và Average
. Thay vào đó, khi tôi làm điều này trong LINQPad, tôi thấy cùng một truy vấn được chạy ba lần. Nếu tôi thay thế .AsEnumerable()
bằng .ToList()
, nó chỉ được truy vấn một lần.
Tôi có thiếu điều gì đó về những gì AsEnumerable
là/không?
Một câu hỏi rất hữu ích để hiểu được hành vi của 'AsEnumerable()' – Lijo