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

LINQ 學習筆記 (七) 延遲執行與非泛型集合查詢 (二) 資料源變更自動反映

     編輯:關於C語言

延遲執行特性:資料源變更自動生效

查詢定義時僅捕獲操作委派,真正執行在列舉時。因此列舉前若修改資料源,下次列舉會反映最新狀態:

static void Main()
{
    int[] collection = { 10, 11, 12, 13, 14 };
    var result = from i in collection select DoubleInt(i);

    foreach (var i in result) Console.WriteLine(i);  // 20,22,24,26,28

    Console.WriteLine("Change data source:");
    for (int i = 0; i < collection.Length; i++) collection[i] += 10;

    foreach (var i in result) Console.WriteLine(i);  // 40,42,44,46,48
}

static int DoubleInt(int i) => i * 2;

關鍵點

  • 查詢變數 result 只是查詢定義(運算式樹/委派鏈),不包含結果資料。
  • 每次 foreach 列舉都會重新對當前資料源執行查詢邏輯。
  • 此特性在資料頻繁更新的場景極具價值,但也可能導致非預期行為,需謹慎使用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved