首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

LINQ 查詢三步走:數據源、創建查詢、執行查詢

     編輯:關於.NET

實現 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>,稱為「可查詢類型」。
  • 若數據源不在內存(如 XML、SQL),LINQ Provider 需將其包裝為可查詢類型:
    • LINQ to XML:XElement.Load(...) 載入為 XElement。
    • LINQ to SQL:建立 DataContext 映射實體類。

第二步:創建查詢 —— 查詢變量不執行

  • 查詢表達式賦值給變量 numQuery(類型 IEnumerable<int>)。
  • 此時不執行任何操作,不返回數據,僅存儲生成結果所需的信息(表達式樹或委托鏈)。

第三步:執行查詢 —— 延遲 vs 立即

延遲執行

foreach 迭代時才真正執行查詢邏輯,逐個產出結果。這允許在執行前多次組合、修改查詢。

立即執行

  • 聚合操作:Count()、Sum()、Average() 等需遍歷整個序列,強制立即執行。
  • 手動觸發:ToList()、ToArray()、ToDictionary() 將結果物化為集合。
var query = numbers.Where(n => n % 2 == 0);
int count = query.Count();        // 立即執行
var list = query.ToList();        // 立即執行,緩存結果

總結

理解「查詢定義」與「查詢執行」分離,是驾驭 LINQ 高效、正確的關鍵。善用延遲執行組合查詢,必要時显式物化避免重複計算。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved