zoukankan      html  css  js  c++  java
  • 【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查询操作符用例例子下一章节说明

  • 相关阅读:
    codeforces689A
    codeforces222A
    codeforces553A
    2021牛客国庆集训派对day6 J
    SVM--支持向量机
    压缩感知
    范数
    LeNet详解
    卷积神经网络(CNN)详解
    BP算法实例—鸢尾花的分类(Python)
  • 原文地址:https://www.cnblogs.com/SignX/p/11432646.html
Copyright © 2011-2022 走看看