2008-09-18 LINQ 特性! 延遲執行與立即執行 2605 0 LINQ 摘要:LINQ 特性! 延遲執行與立即執行 class Program { static void Main(string[] args) { Demo_Deffered(); Console.WriteLine(); Demo_immediate(); } /// <summary> /// 延後執行查詢 /// </summary> public static void Demo_Deffered() { int[] num = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; //Local Variable int i = 0; //查詢變數本身只會儲存查詢命令。 var q = from o in num select ++i; //實際執行查詢時機在執行 foreach 時。 foreach (int v in q) { Console.WriteLine("v:{0,-5}i:{1,-5}", v, i); } } /// <summary> /// 立即執行 /// </summary> public static void Demo_immediate() { int[] num = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; //Local Variable int i = 0; var q = from o in num select ++i; //需要得到結果的運算子,就會立即執行查詢(ex:Max, First) int count = q.Count(); //第一次執行查詢 foreach (int v in q) //第二次執行查詢 { Console.WriteLine("v:{0,-5}i:{1,-5}", v, i); } } } 請具備此觀念,設計 LINQ 程式時 , 小心多餘的查詢,影響效能。 LINQ 回首頁