Tôi có một danh sách các mục và truy vấn LINQ trên chúng. Bây giờ, với thực thi hoãn lại của LINQ, vòng lặp tiếp theo sẽ thực hiện truy vấn chỉ một lần hoặc cho mỗi lượt trong vòng lặp?Foreach có thực hiện truy vấn chỉ một lần không?
Với ví dụ này (Trích từ Introduction to LINQ Queries (C#), on MSDN)
// The Three Parts of a LINQ Query:
// 1. Data source.
int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };
// 2. Query creation.
// numQuery is an IEnumerable<int>
var numQuery =
from num in numbers
where (num % 2) == 0
select num;
// 3. Query execution.
foreach (int num in numQuery)
{
Console.Write("{0,1} ", num);
}
Hoặc, nói cách khác, sẽ có được bất kỳ sự khác biệt nếu tôi có:
foreach (int num in numQuery.ToList())
Và, nó sẽ có vấn đề, nếu dữ liệu cơ bản không nằm trong một mảng, nhưng trong một cơ sở dữ liệu?
Có một lần. Có lẽ thậm chí ít hơn toàn bộ việc thực hiện truy vấn, vì bản chỉnh sửa ở trên giải thích. –
Cảm ơn bạn đã giải thích chi tiết cho tôi! – Marcel