LINQ中大部分查询运算符都有一个非常重要的特性:延迟执行.这意味着,他们不是在查询创建的时候执行,而是在遍历的时候执行(换句话说,当enumerator的MoveNext方法被调用时).让我们考虑下面这个query: ); IEnumerable<); ); // Add an extra element after the query foreach (int n in query) Console.Write(n + "|"); // 10|20| } 可以看出,我们在查询…
延迟执行的经典例子: 我们用 select ++i 就可以看到在foreach 时候,查询才被执行. public static void Linq99(){ int[] numbers = new int[] { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; int i = 0; var q = from n in numbers select ++i; foreach (var v in q) Console.WriteLine("v…
借鉴于该篇博客:http://kb.cnblogs.com/page/42581/ 先看两个方法 public class YieldClasses { public static IEnumerable<int> WithNoYied() { List<int> list = new List<int>(); for (int i = 0; i < 100; i++) { Console.Write(i.ToString()); list.Add(i); } r…