實現 LINQ 查詢遵循固定的三步流程:獲取數據源 → 創建查詢 → 執行查詢。本文以簡單數組為例,清晰拆解每一步的關鍵點與延遲執行機制。
class IntroToLINQ
{
static void Main()
{
// 1. 獲取數據源
int[] numbers = { 0, 1, 2, 3, 4, 5, 6 };
// 2. 創建查詢(延遲執行)
var numQuery = from num in numbers
where (num % 2) == 0
select num;
// 3. 執行查詢(觸發迭代)
foreach (int num in numQuery)
{
Console.Write("{0,1} ", num); // 輸出:0 2 4 6
}
}
}
int[] 隱式實現 IEnumerable<T>,稱為「可查詢類型」。XElement.Load(...) 載入為 XElement。DataContext 映射實體類。numQuery(類型 IEnumerable<int>)。foreach 迭代時才真正執行查詢邏輯,逐個產出結果。這允許在執行前多次組合、修改查詢。
Count()、Sum()、Average() 等需遍歷整個序列,強制立即執行。ToList()、ToArray()、ToDictionary() 將結果物化為集合。var query = numbers.Where(n => n % 2 == 0);
int count = query.Count(); // 立即執行
var list = query.ToList(); // 立即執行,緩存結果
理解「查詢定義」與「查詢執行」分離,是驾驭 LINQ 高效、正確的關鍵。善用延遲執行組合查詢,必要時显式物化避免重複計算。