• LinQ开篇介绍


       语言集成查询(LINQ) Visual Studio2008中引入的一组功能。

    可为 C# 和 Visual Basic 语言语法提供强大的查询功能。

    LINQ引入了标准易学的数据查询和更新模式,能够扩展该方法来支持不论什么类型的数据存储。 Visual Studio 包含 LINQ 提供程序集,后者支持将 LINQ 与.NET Framework 集合、SQL Server 数据库、ADO.NET 数据集和 XML 文档结合使用。

     

    LINQ查询中。能够使用同样的基本编码模式来查询和转换xml文档,sql数据库,ADO.NET数据集以及其它格式的数据。总的说是下面三部分

    • LINQ to Objects 主要负责对象的查询
    • LINQ to XML 主要负责 XML 的查询
    • LINQ to ADO.NET 主要负责数据库的查询
      • LINQ to SQL

     

    整体架构图



     

    看完了主要的架构图我们就来看看LINQ给我们提供的查询操作吧。

     

    LINQ的查询分为三个部分


    • 获取数据源
    • 创建查询
    • 运行查询

     

    以下我们就来做个初体验。在没有linq前,我们这样查询

     

    从number数组中提权耦并降序排列
     
    int[] numbers = newint[] { 6, 4, 3, 2, 9, 1, 7, 8, 5 };
     
    List<int> even= new List<int>();
     
    foreach (int numberin numbers)
    {
        if (number % 2 == 0)
        {
            even.Add(number);
        }
    }
     
    even.Sort();
    even.Reverse();

    有了linq我们这样查询

    int[] numbers = newint[] { 6, 4, 3, 2, 9, 1, 7, 8, 5 };
     
    var even = numbers
        .Where(p => p % 2 == 0)
        .Select(p => p)
        .OrderByDescending(p => p);

     


     

    以上的查询使用了Lamdba的方法。



    以下我们演示怎样使用源码查询的三个部分

     
    class IntroToLINQ
    {       
        static void Main()
        {
            // LINQ的构成,三部分:
            // 1. Data source.
            int[] numbers = new int[7] { 0, 1, 2,3, 4, 5, 6 };
     
            // 2. 创建查询
            // numQuery is anIEnumerable<int>
            var numQuery =
                from num in numbers
                where (num % 2) == 0
                select num;
     
            // 3. 运行查询.
            foreach (int num in numQuery)
            {
                Console.Write("{0,1} ",num);
            }
        }
    }


    注意 select中的  num为查询变量

     在 LINQ中,查询的运行与查询本身截然不同;换句话说,假设仅仅是创建查询变量,则不会检索不论什么数据。

     


     

     

    查询


    上一个实例中查询从整数数组中返回全部偶数。

    该查询表达式包括三个字句。fromwhereselect(这些字句的顺序与SQL中的顺序相反).from指定查询的数据源。where字句应用筛选器。select字句制定返回的元素类型。LINQ 中,查询变量本身不运行不论什么操作而且不返回不论什么数据。 它仅仅是存储在以后某个时刻运行查询时为生成结果而必需的信息

     

    查询运行


    延迟运行

    如前所述,查询变量本身仅仅是存储查询命令。 实际的查询运行会延迟到在 foreach语句中循环訪问查询变量时发生。 此概念称为“延迟运行”。以下的演示样例对此进行了演示: 

    //  Query execution.
    foreach (int num innumQuery)
    {
        Console.Write("{0,1} ", num);
    }
     

    该运行方法才会调用上面的查询方法。而且有多少个数据运行多少次的查询操作。

    迭代变量 num 保存了返回的序列中的每一个值(一次保存一个值)

     

    小结:


    以上是对LINQ的开篇介绍。LINQ查询表达式的基本构成,当中涉及到了延迟载入。

    说道这个延迟载入,整的非常神奇一样。看透了也仅仅是一个执行时的方法调用。兴许介绍linq的对象查询

    每一个对象查询中都少不了托付泛型。以及匿名函数lamdba的写法。所以他们是相辅相成的。

     

     

  • 相关阅读:
    [ACM] hdu 1848 Fibonacci again and again(Nim博弈 SG函数)
    [ACM] hdu 2176 取(m堆)石子游戏(Nim博弈)
    [ACM] hdu 1850 Being a Good Boy in Spring Festival(Nim博弈)
    母函数
    Euclid算法(欧几里得算法)
    Poj 2533
    Poj 1836
    Poj 3267
    hdu 1878
    poj 3349
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/6889806.html
Copyright © 2020-2023  润新知