LINQ Learning-QueryExecution(延迟加载)、SetOperators

QueryExecution 

          int[] numbers = new int[] { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
                int i = 0;
                var simpleQuery =
                    from num in numbers
                    select ++i;

                //i的个数不会增加,直到语句被真正执行,即到foreach的时候
                Console.WriteLine("The current value of i is {0}", i); //i为0

                foreach (var item in simpleQuery)
                {
                    Console.WriteLine("v = {0}, i = {1}", item, i);          
                }

      

  然后将上面代码中select部分替换(像ToList()、Max()、Count()等方法会立即执行query语句):    

        var immediateQuery = (
                    from num in numbers
                    select ++i)
                    .ToList();

   这时再执行后面的输入,i已经为10了。

     

SetOperators

    

        int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };  

        int[] numbersB = { 1, 3, 5, 7, 8 };

          Union:  var uniqueNumbers = numbersA.Union(numbersB);                    0, 2, 4, 5, 6, 8, 9,1,3,7    AB并集

        Intersect:var commonNumbers = numbersA.Intersect(numbersB);         5,8              AB交集

        Except:   IEnumerable<int> aOnlyNumbers = numbersA.Except(numbersB);   0, 2, 4,  6, 9         A有B无

posted @ 2013-05-03 12:22  小飞的DD  阅读(120)  评论(0编辑  收藏  举报