zoukankan      html  css  js  c++  java
  • 初识LINQ

    LINQ简介:

            LINQ是语言继承查询(Language Integrated Query) ,一组用于C#和VB的语言拓展,它允许编写C#或VB代码以查询数据库相同的方式操作内存数据. 

    LINQ的产生:

            在面向对象思想的发展中,但是对于数据层面上,所有的读取查询操作必须要在sql语句的基础上进行对数据源的操作,这就是LINQ产生的原因,将查询方法进行封装,对数据源进行操作 ,它的产生,联通了数据与逻辑.

    LINQ表达式,需要通过Lambda表达式表示出来.

    LINQ的类库:

            在.NET类库中,LINQ相关类库都在System.Linq命名空间下,该命名空间提供支持使用LINQ进行查询的类和接口,其中最主要的是以下两个类和接口.

        IEnumerable接口:它表示可以查询的数据集合,一个查询通常是逐个对集合中的元素进行筛选操作,返回一个新的IEnumerable接口,用来保存查询结果;

        IQueryable接口:它集成IEnumerable接口,表示一个可以插叙的表达式目录树;

        Enumerable:它通过对IEnumerable提供扩展方法,实现LINQ标准查询运算符.包括过路,导航,排序,查询,联接,求和,求最大值,求最小值等操作.

        Queryable:它通过对IQueryable提供扩展方法,实现LINQ标准查询运算符.包括一系列操作.

    LINQ的种类:<通过数据源划分>

    • LINQ to Object---------->数据源为实现了IEnumerable和IQueryable接口的数据集合,属于LINQ基础
    • LINQ to XML------------>数据源为XML文件,加载至内存中使用LINQ查询
    • LINQ to ADO.NET(DataSet)------>将数据库中的数据映射至内存中,通过LINQ进行查询

    LINQ查询的三个必须:

    1. 数据源
    2. 创建查询
    3. 执行查询

    关于Lambda表达式:

            lambda表达式是一种可用于委托或表达式目录树类型的匿名函数.通过使用lambda表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数.

        表达式Lambda:

                创建Lambda表达式,需要使用goes to运算符=>,

                表达式位于=>运算符右侧的Lambda表达式称为"表达式Lambda".表达式Lambda广泛应用于表达式树的构造,表达式Lambda会返回表达式结果,并采用一下基本形式:

                (input parameters) => expression

                仅当Lambda只有一个输入参数是,括号才是可选的,否则括号是必须的,括号内的两个或多个参数需要使用逗号分隔:

                (x,y) => x == y

                使用空括号制定零个输入参数

                () => SomeMethod()

        语句Lambda:

                语句Lambda与表达式Lambda表达式类似,知识语句括在大括号中.

                (input parameters) => {statement;}

                语句Lambda的主体可以包含任意数量的语句;但是,实际上通常不多于两到三个.

     

    LINQ基本表达式:

    From子句

    from子句指定要查找的数据源以及范围变量,多个from子句则表示从多个数据源查找数据

    var str = from lq in str select lq;

    Where子句

    where子句指定了筛选的条件,这也就是说在where子句中的代码段必返回布尔值才能够进行数据源的筛选.

    var str = from m in MyList where m.Length >5 select m

    当需要多个where子句进行复合条件查询时,可以使用"&&"或"||"进行子句的整合.

    Group子句

    group子句将数据源中的数据进行分组

    var str = from p in PersonList group p by p.sex
    
    //此时str中长度为2,存在两个组,男和女,然后需要两个foreach进行数据的读取

    Orderby子句

     orderby子句指定元素的排序字段和排序方式.当有多个排序字段时,由字段顺序确定主次关系,可以指定升降序规则,默认为升序,使用OrderbyDescending表示降序规则.

    var str = from p in PersonList orderby p.age select p;//按年龄升序排序

    orderby子句同样能够进行多个条件排序,只需要将这些条件用","分隔即可

    Join子句

    在LINQ中同样可以使用join子句对有关系的数据源或数据对象进行查询,但是首先这两个数据源必须要有一定的联系

     var str = from p in PersonList join car in CarList on p.cid equals car.cid select p;

    如果需要返回多个字段的话,在select使用new 关键字创建返回数据集合

  • 相关阅读:
    CODEVS 3137 栈练习1
    CODEVS 3138 栈练习2
    线段树———模板
    深度优先搜索与广度优先搜索———模板
    犯罪团伙 codevs 3554
    嘟!数字三角形 W WW WWW集合!
    寻找子串位置 codevs 1204
    流输入练习——寻找Sb.VI codevs 3096
    C++之路进阶——codevs3287(货车运输)
    c++之路进阶——codevs4543(普通平衡树)
  • 原文地址:https://www.cnblogs.com/wangxiao666/p/12556482.html
Copyright © 2011-2022 走看看