【c#基础】Linq

Linq 语言集成查询:可以使用相同的语法访问不同的数据源。

查询表达式必须以from字句开头,以select或group自居结束,在这两个字句之间,可以使用where,orderby,join,let和其他from子句。

注意:变量query只指定了Linq查询,该查询不是通过这个赋值语句执行的,只要使用foreach循环访问查询,该查询就会执行。

Linq为IEnumerable<T>接口提供了了各种扩展方法。

调用扩展方法只是调用静态方法的一种新语法。

一:推迟查询执行

在运行期间定义查询表达式时,查询就不会运行,查询会在迭代数据项时运行

每次在迭代中使用查询时,都会调用扩展方法。在大多数情况中,是非常有效的,因为我们可以检测出源数据中的变化。但是,扩展方法ToArray()、ToList()等可以改变这个操作。

上面这句话的意思是:像Where()、First()等扩展方法是推迟查询的要等到使用它的时候才会用到。

但是像ToArray()和ToList()等不是延迟查询 调用这种扩展方法后直接得到相应的数据,而非延迟查询。

 1 //延迟查询  
 2 var names = new List<string> {"Nino", "Alberto", "Juan", "Mike", "Phil"};
 3             var namesWithJ = (from n in names where n.StartsWith("J") orderby n select n);
 4             Console.WriteLine("First iteration");
 5             foreach (string name in namesWithJ)
 6             {
 7                 Console.WriteLine(name);
 8             }
 9 
10             Console.WriteLine();
11             names.Add("John");
12             names.Add("Jim");
13             names.Add("Jack");
14             names.Add("Denny");
15             Console.WriteLine("Second iteration");
16             foreach (var item in namesWithJ)
17             {
18                 Console.WriteLine(item);
19             }
20             Console.ReadKey();

 

 

 

 

 1 //ToList() 
 2 var names = new List<string> {"Nino", "Alberto", "Juan", "Mike", "Phil"};
 3             var namesWithJ = (from n in names where n.StartsWith("J") orderby n select n).ToList();
 4             Console.WriteLine("First iteration");
 5             foreach (string name in namesWithJ)
 6             {
 7                 Console.WriteLine(name);
 8             }
 9 
10             Console.WriteLine();
11             names.Add("John");
12             names.Add("Jim");
13             names.Add("Jack");
14             names.Add("Denny");
15             Console.WriteLine("Second iteration");
16             foreach (var item in namesWithJ)
17             {
18                 Console.WriteLine(item);
19             }
20             Console.ReadKey();

输出结果:

 

二:Linq标准查询操作符

 

 

 

 

 

 

 Linq查询操作符用例例子下一章节说明

posted @ 2019-09-02 20:20  SignX  阅读(239)  评论(0编辑  收藏  举报