LINQ延迟查询的例子

 1             //linq延迟查询。两次查询结果不同

 2             List<string> l = new List<string>() { "aaa", "bbb", "ccc" };

 3             var query = l.Select(lstr => new { Name = lstr.ToString() });   //延迟查询,此时还未真正查询产生query

 4             foreach (var item in query) //查询真正开始

 5             {

 6                 Console.WriteLine(item);

 7             }

 8             Console.WriteLine();

 9 

10             l.Add("ddd");

11             foreach (var item in query) //查询再次开始,重新查询list

12             {

13                 Console.WriteLine(item);

14             }        

第一次输出:

aaa

bbb

ccc

第二次输出

aaa

bbb

ccc

ddd

 1            //ToList()立即查询,并产生query

 2             List<string> l = new List<string>() { "aaa", "bbb", "cccccc" };

 3             var query = l.Select(lstr => new { Name = lstr.ToString() }).ToList();  //立即查询,此时还未真正查询产生query

 4             foreach (var item in query) //只是迭代query,不再查询

 5             {

 6                 Console.WriteLine(item);

 7             }

 8             Console.WriteLine();

 9             l.Add("ddd");

10             foreach (var item in query) //只是迭代query,不再查询

11             {

12                 Console.WriteLine(item);

13             }

两次都只输出:

aaa

bbb

ccc

而ddd不输出,因为只是迭代query,不是重新查询list

 

你可能感兴趣的:(LINQ)