linq的延迟执行和立即执行


延迟执行 

        static void QueryOverInts()
        {
            int[] numbers = new int[] {10,20,30,40,1,2,3,8};

            //获取偶数
            var subset = from q in numbers
                         where q % 2 == 0
                         select q;

            //linq语句在这个地方执行,前面的from语句没有真正的运算,这叫做的linq的延迟执行,
            //利用这个,我们可以为相同的容器执行多次应用相同的ling查询。
            foreach (var i in subset)
            {
                Console.WriteLine(i);
            }
            //修改数组中的一些数据
            numbers[0] = 4;

            foreach (var j in subset)
                Console.WriteLine(j);
            Console.ReadKey();



        }

如果希望立即执行,可以调用有Enumberable类型定义的许多扩展方法来完成,如Toarry<T>(),Tkey(),ToList<T>()等方法。

 //获取偶数
            var subset = (from q in numbers
                          where q % 2 == 0
                          select q).ToList();

  

原文地址:https://www.cnblogs.com/xinyebs/p/3116574.html