我需要迭代對象列表,只爲布爾屬性設置爲true的對象執行某些操作。我這個代碼LINQ + Foreach vs Foreach +如果
foreach (RouteParameter parameter in parameters.Where(p => p.Condition))
{ //do something }
和該代碼之間的辯論
foreach (RouteParameter parameter in parameters)
{
if !parameter.Condition
continue;
//do something
}
第一個代碼顯然是更清潔,但我懷疑它會遍歷列表中兩次 - 一次查詢和一次該foreach。這不會是一個巨大的名單,所以我不過分關注性能,但循環兩次的想法只是錯誤我。
問:有沒有乾淨/漂亮的方式來寫這沒有循環兩次?
原來我誤解了LINQ的延遲執行的工作方式,而這些方式在實際執行相同。希望我可以標記多個答案,因爲下面的所有答案都會添加。 – Joel 2012-01-31 13:50:41