2009-07-17 33 views

回答

5

這意味着你可以將查詢添加額外的「經營者」。這很重要,因爲你可以非常有效地做到這一點。

例如,假設你有一個返回員工列表(枚舉)的方法:

var employees = GetEmployees(); 

和使用一個返回所有經理的另一種方法:

IEnumerable<Employee> GetManagers() 
{ 
    return GetEmployees().Where(e => e.IsManager); 
} 

你可以調用該函數以獲得即將退休的經理並向他們發送這樣的電子郵件:

foreach (var manager in GetManagers().Where(m => m.Age >= 65)) 
{ 
    SendPreRetirementMessage(manager); 
} 

流行測驗:您的員工名單將迭代多少次?答案是,正好是一次;整個操作仍然只是O(n)!

此外,我不需要有單獨的方法。我撰寫這些步驟的查詢都在同一個地方:

var retiringManagers = GetEmployees(); 
retiringManagers = retiringManagers.Where(e => e.IsManager); 
retiringManagers = retiringManagers.Where(m => m.Age >= 65); 
foreach (var manager in retiringMangers) 
{ 
    SendPreRetirementMessage(); 
} 

這樣做的一個很酷的事情是,我可以改變在運行時,這樣我可以包括或不包括內的組合物的一個組成部分if塊,以便在運行時決定使用特定的過濾器,並且所有內容仍然很好,很漂亮。

+0

很好的解釋,+1 – 2009-07-17 21:57:10

4

我認爲這意味着你可以菊花鏈的查詢,這樣

var peterJacksonsTotalBoxOffice 
    = movies.Where(movie => movie.Director == "Peter Jackson") 
     .Sum(movie => movie.BoxOffice); 
相關問題