Tôi cần lặp qua Danh sách đối tượng, chỉ thực hiện điều gì đó cho các đối tượng có thuộc tính boolean được đặt thành true. Tôi đang tranh luận giữa mã nàyLINQ + Foreach vs Foreach + Nếu
foreach (RouteParameter parameter in parameters.Where(p => p.Condition))
{ //do something }
và mã này
foreach (RouteParameter parameter in parameters)
{
if !parameter.Condition
continue;
//do something
}
Mã đầu tiên rõ ràng là sạch, nhưng tôi nghi ngờ nó sẽ lặp trên danh sách hai lần - một lần cho các truy vấn và một lần cho foreach. Đây sẽ không phải là một danh sách lớn vì vậy tôi không quá lo lắng về hiệu suất, nhưng ý tưởng lặp lại hai lần chỉ lỗi tôi.
Câu hỏi: Có cách nào sạch/đẹp để viết điều này mà không lặp lại hai lần?
Hóa ra tôi đã hiểu lầm cách thực hiện chậm LINQ của công trình, và các hình thức thực sự giống hệt nhau trong thực hiện. Ước gì tôi có thể đánh dấu nhiều câu trả lời, bởi vì tất cả những câu trả lời dưới đây đều bổ sung thêm điều gì đó. – Joel