Tôi đã thử nghiệm với LINQ để xem những gì nó có thể làm - và tôi thực sự yêu thích nó cho đến nay :)Thực hiện trì hoãn LINQ với giá trị địa phương
Tôi đã viết một số truy vấn cho một thuật toán, nhưng tôi đã không t có được kết quả mong đợi của tôi ... các Enumeration luôn được trả về rỗng:
trường hợp # 1
List<some_object> next = new List<some_object>();
some_object current = null;
var valid_next_links =
from candidate in next
where (current.toTime + TimeSpan.FromMinutes(5) <= candidate.fromTime)
orderby candidate.fromTime
select candidate;
current = something;
next = some_list_of_things;
foreach (some_object l in valid_next_links)
{
//do stuff with l
}
tôi đã thay đổi tờ khai truy vấn là inline như thế này, và nó làm việc tốt:
trường hợp # 2
foreach (some_object l in
(from candidate in next
where (current.toTime + TimeSpan.FromMinutes(5) <= candidate.fromTime)
orderby candidate.fromTime
select candidate))
{
//do stuff with l
}
Có ai biết tại sao nó không hoạt động trong trường hợp # 1? Cách tôi hiểu nó, truy vấn không được đánh giá khi bạn tuyên bố nó, vì vậy tôi không thấy làm thế nào có sự khác biệt.