• linq入门


    只要是集合都可以用linq查询的,(必须支持Ienumerable接口)比如对象,数据库,xml,实体数据模型,外部应用程序等等,省写很多代码。

    指定数据源:from子句

    指定条件:where子句(限制运算符)

    指定元素:select子句

    Foreach循环实际上并不是linq的一部分,只是迭代结果,不过它是实际执行查询的代码,查询结果变量仅保存了执行查询计划,在访问查询结果之前,并没有提取linq数据,此之谓查询的延迟也

    查询语法是首选方式,很直观,当然也可以用方法语法(lambda表达式什么的)

    排序用orderby子句,默认顺序,倒叙要加个descending 在后面

    Linq提供了一组聚合运算符可以用于分析查询的结果:

    Count() 结果的个数

    Min() 结果中的最小值

    Max() 结果中的最大值

    Average() 数字结果的平均值

    Sum() 所有数字结果的总和

    Aggregate()累加

    聚合运算符返回一个简单的标量类型,而不是一系列结果,所以会立即执行查询

    查询复杂的集合时,可能需要在查询中创建新对象,与sql不同,linq中的select不能选取多个字段,所以需要动态创建新对象来保存查询的结果(匿名类的语法)

    单值选择查询 在结果集上用.distinct()

    另一类查询是确定数据是否满足某个条件,linq提供2个布尔方法:Any()和All()

    多级排序,在orderby后跟多个字段,或用方法语法thenby()

    组合查询:

    Var queryResults=

                    From c in customers

                    Group c by c.region into cg

                    Select new {total=cg.sum(c=>c.salses),region=cg.key};

    Take()和skip()运算符,这是分区运算符,take只取结果集的前n个结果,类似sql server中的 top,而skip正相反

    Linq通过first()方法返回结果集中第一个匹配给定条件的元素,还可以用firstOrDefault()

    集运算符有:union(),intersect(),except()。

    集运算符要求成员有相同的类型,才能确保得到希望的结果

    而join查询就方便多了,专门处理不同对象。例如:

    Var queryResults=

                    From c in customers

                    join o in orders on c.id equals o.id

                    Select new {c.id,c.city,salesBefore=c.sales,neworder=o.amount};

    也可以这样:

              From c in customers

              From o in orders

              Where c.id==o.id

            

    Linq 的变体:

    Linq to objects

    Linq to XML

    Linq to ADO.NET(entities,dataset,sql,pLinq)

    使用linq to entities 类的第一步是为要访问的数据库创建objectContext对象的一个实例,这是在数据源中创建的.edmx文件的编译类,这个对象是数据库的网关,提供了在程序中控制它的所有方法,还是创建业务对象的工厂

    Linq to XML 为创建和查询XML数据提供了额外的选项,开发速度加快

       Xdocument doc=new xdocument(

    new xelement(“customers”,

    new xelement(“customer”,…),new xelement(“customer”,…)));

    保存save()和加载load()xml文档

    从字符串中加载xml 可以使用parse()方法。

    如果想改变xml文档的编码格式,可以在构造的时候添加一个XDeclaration()对象在参数列表开头,或者设置XDocument 的Declaration属性

    处理xml片段和处理整个文档一样(根为xelement对象),只是有些节点不可添加,比如注释,声明,处理指令什么的

    从数据库中生成XML:

      Xdocument doc=new xdocument(

    new xelement(“customers”,

    from c in xxx.xxx.AsEnumerable()

    select new xelement(“customer”,

    new xattribute(“id”,c.customerid),

    new xattribute(“city”,c.city))

    ));

    查询xml成员:

    Elements()返回xml文档或片段中的所有第一级元素,对于有效的xml文档只有一个第一级元素

    Descendants() 返回xml文档或片段中的所有子元素(所有级别的子元素)

    Linq to xml 还提供了一个Ancestors()方法,它与Descendants()正相反,只为完整计。

    Attributes()返回当前选中元素的所有特性,和descendants()一样可以传送要搜索的具体名称

  • 相关阅读:
    阿诺尔德给5至15岁孩子出的数学题
    上手机器学习,从搞懂这十大经典算法开始
    海报模板
    测度论--长度是怎样炼成的[zz]
    柯西不是你
    搭建Web部署环境
    搭建jdk环境
    Win10远程桌面 出现 身份验证错误,要求的函数不受支持,这可能是由于CredSSP加密Oracle修正 解决方法
    Web开发技术选型之Java与PHP
    从java到web前端再到php,一路走来的小总结
  • 原文地址:https://www.cnblogs.com/ongoing/p/2787811.html
Copyright © 2020-2023  润新知