• LINQ学习笔记(二)


       上一篇是根据百度百科写的随便,同时也纠正我对LINQ的看法,因为首次接触LINQ是使用EF对数据库数据的操作。

    所以误以为它操作数据库的一种新手段。

       LINQ语言集成查询是一组技术的名称,这些技术建立在查询功能直接集成在带C#语言的基础上。

    借助LINQ,查询现在已经是高级语言构造,就如同类、方法、事件等等。

    LINQ的数据源包括SQL数据库,ADO.NET数据集,XML文档和流,以及.NET集合中数据。

    下面是以简单的例子入门

    // 指定数据源
    int[] scores = new int[] { 97, 92, 81, 60 };

    // 定义查询表达式
    IEnumerable<int> scoreQuery =
    from score in scores
    where score > 80
    select score;

    // 执行查询
    foreach (int i in scoreQuery)
    {
    Console.Write(i + " ");
    }

    输出结果是:97 92 81

    其中scoreQuery被成为"查询变量",简称"查询"。

    查询变量本身并不存储实际的结果数据,而是当foreach语句执行时通过变量i返回的。

    LINQ查询的数据只有在用到的时候才会真正的去查询,因为就是说如何不执行foreach类似的

    查找数据的语句,是不会有数据的出现的。

    其中score是范围变量。范围变量的类型是有数据源中元素的类型确定的,上述score是int类型。

    查询表达式必须以from子句开头,同时指定数据源和范围变量,并且以select或group子句结尾。

    在对源序列节能型遍历的过程中,范围变量表示源序列中的每个后续元素。

    在第一个子句from和最后一个select胡或group子句之间,表达式必须包含

    一个或多个下列可选子句:where、orderby、join、let甚至附加的from子句。

    还可以是使用into关键字使join或group子句的结果充当同一下查询表达式中附加

    查询子句的源。

    LINQ的查询语法在上一篇中并未做解释

    所以在这一篇加以解释

    LINQ是存在两种语法。

    1.Query syntax 查询语法 ,就是通过写查询表达式的方式实现

    例如:

    IEnumerable<City> queryMajorCities =
    from city in cities
    where city.Population > 100000
    select city;

    上述的代码就是以查询语句的方法实现的,但此时并不存在真正的数据。

    2.Method-based syntax 基于方法的语法,就是通过方法的形式实现查询

    例如:

    IEnumerable<City> queryMajorCities2 = cities.Where(c => c.Population > 100000);

    其中cites是数据源,通过在数据源的方法实现查询。

    以上的查询变量都是显示指定了类型,但它因为是支持类型推断来隐式类型化的。

    使用var关键字指示编译器在编译时推断查询变量的类型。

    例如:

    var queryCities =
    from city in cities
    where city.Population > 100000
    select city;

  • 相关阅读:
    xlib dev[1]
    [转]Kinect for Windows SDK开发入门(三):基础知识 下
    [译]Kinect for Windows SDK开发入门(六):骨骼追踪基础 上
    [转]Kinect for Windows SDK开发入门(七):骨骼追踪基础 下
    [转]Kinect for Windows SDK开发入门(一):开发环境配置
    [转]Kinect for Windows SDK开发入门(四):景深数据处理 上
    [转]Kinect for Windows SDK开发入门(二):基础知识 上
    [转]Kinect for Windows SDK开发入门(五):景深数据处理 下
    Ogre/Torque 基础类plane简单释疑
    torque dts格式大概分析
  • 原文地址:https://www.cnblogs.com/xiaoai123/p/6684566.html
Copyright © 2020-2023  润新知