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

原文地址:https://www.cnblogs.com/nlh774/p/3489664.html