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 方法也會觸發查詢執行,Count
,First
,Max
,Average
。它們返回單個值。ToList
和 ToArray
收集結果並分別將它們轉換為 List 或 Array。
請注意,如果在同一查詢上呼叫多個 LINQ 函式,則可以多次遍歷查詢。這可以在每次通話時給出不同的結果。如果你只想使用一個資料集,請確保將其儲存到列表或陣列中。