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

LINQ 學習筆記 (七) 延遲執行與非泛型集合查詢 (一) 基礎概念與驗證

     編輯:關於C語言

延遲執行基本概念

LINQ 查詢定義時不立即計算,而是在列舉結果(如 foreach)時逐元素執行。這避免了一次載入整個資料源,大幅改善大數據場景效能。

驗證範例

static void Main()
{
    int[] collection = { 10, 11, 12, 13, 14 };
    Console.WriteLine("Begin query:" + DateTime.Now);
    var result = from i in collection select DoubleInt(i);
    Console.WriteLine("End query & Begin output:" + DateTime.Now);
    foreach (var i in result)
    {
        Console.WriteLine("Result:" + i + " Time:" + DateTime.Now);
    }
    Console.WriteLine("End output:" + DateTime.Now);
}

static int DoubleInt(int i)
{
    Console.WriteLine("The parameter is:" + i);
    Thread.Sleep(1000);
    return i * 2;
}
/* 輸出:
Begin query: 22:41:50
End query & Begin output: 22:41:50  <-- 查詢定義幾乎零耗時
The parameter is:10
Result:20 Time:22:41:51  <-- 每個元素間隔 1 秒產出
The parameter is:11
Result:22 Time:22:41:52
...
End output: 22:41:55
*/

關鍵觀察

  • 查詢定義(var result = ...)瞬間完成,無實際計算。
  • 計算發生在 foreach 迴圈中,逐元素、按需執行。
  • 總耗時約等於元素數 × 單元素計算時間(此處 5 秒)。

這證明 LINQ 採用「拉取式」延遲執行模型,而非「推送式」立即計算。

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