LINQ to Object 如何執行查詢

LINQ 查詢不會立即執行。在構建查詢時,你只需儲存查詢以供將來執行。只有當你實際請求迭代查詢時才執行查詢(例如,在 for 迴圈中,當呼叫 ToList,Count,Max,Average,First 等時)

這被認為是延期執行。這允許你在多個步驟中構建查詢,可能基於條件語句對其進行修改,然後僅在需要結果時才執行它。

鑑於程式碼:

var query = from n in numbers 
            where n % 2 != 0
            select n;

上面的示例僅將查詢儲存到 query 變數中。它不執行查詢本身。

foreach 語句強制查詢執行:

foreach(var n in query) {
    Console.WriteLine($"Number selected {n}");
}

一些 LINQ 方法也會觸發查詢執行,CountFirstMaxAverage。它們返回單個值。ToListToArray 收集結果並分別將它們轉換為 List 或 Array。

請注意,如果在同一查詢上呼叫多個 LINQ 函式,則可以多次遍歷查詢。這可以在每次通話時給出不同的結果。如果你只想使用一個資料集,請確保將其儲存到列表或陣列中。