沒有引文,它告訴我們什麼地方你看,我們只能在猜測意義。
我會解釋這個短語的意思是說,多個LINQ方法充當一個管道,即每一塊數據都在下一個數據流之前流過。
例如:
var numbers = new[] { 1, 2, 3 };
var results = numbers.Select(number => number * 2).Where(number => number > 3);
充滿渴望的評估,執行應該是這樣的:
1, 2, 3 -> Select -> 2, 4, 6 -> Where -> 4, 6
然而,隨着遞延評價,每個結果在需要時進行計算。這接通的方法的執行的「垂直」,而不是「水平」,執行用於每個數據項的所有方法,然後與下一個數據項再次開始:
1 -> Select -> 2 -> Where -> nothing
2 -> Select -> 4 -> Where -> 4
3 -> Select -> 6 -> Where -> 6
當然,這是不適合的方法真正其在整套設備上運行,如Distinct
和OrderBy
。所有數據項必須「彙集」到那裏直到執行可以繼續。然而,絕大多數情況下,當LINQ方法被要求提供另一個項目時,它們只會從源頭請求項目。
我想或許這篇評論是參照LINQ創建可嵌套方法調用的內存查詢中的Enumerable包裝與作爲表達式樹(對於IQueryProvider)執行的查詢之間的差異而構建的.... – Jeff