zoukankan      html  css  js  c++  java
  • LINQ

    Linq查询知识点详解

    Linq标准查询语法格式

    var data = from  变量  in  集合对象 

                where  布尔表达式

       orderby  排序字段  descending|ascending

                select  变量;

    解释:

     

    select:提取要查询的数据                 where:筛选满足条件的元素   

    from 变量:该变量指代集合中的单个元素   in:从哪里筛选元素

    orderby:排序                          descending:降序  ascending:升序

    注意:where是可选的,如果不加where则表示筛选所有元素.

    示例代码:

     

    使用Linq进行数据查询的条件

    数据源(in 后面的集合对象)必须直接或间接继承自IEnumerable<T>

    或者说:只要数据源继承自IEnumerable<T>,我们就可以使用Linq从它里面检索数据

     

    Where关键字

    筛选满足条件的元素,where关键字后面一定要跟布尔表达式

    Where后面的布尔表达式可以很简单,也可以是复杂的表达式.

    注意:

    注意from关键字后面可以出现多个where表达式,这些表达式之间是并且的关系

     

     

    Select关键字

    Select关键字用于提取要查询的数据.

    Select后面可以直接跟from后面的变量;也可以跟一个匿名类型.

     

     

    Count()方法

    Count(expression<Func<T, bool>>)

    解释:T代表Lambda表达式中的参数部分,bool代表Lambda表达式部分为布尔类型

    Count方法用于获取满足条件的记录数量(有多少个满足条件的记录)

     

     

    Max()Min()

    Max(Expression<Func<T, K>>)Min(Expression<Func<T, K>>)

    Max:求最大值    Min:求最小值

     

     

    First()FirstOrDefault()

    First(Expression<Func<T, bool>>)

    FirstOrDefault(Expression<Func<T, bool>>)

    两个方法都是从集合中筛选满足条件的第一个元素.

    区别:当没有从集合中筛选到满足的条件的元素时,First将会报错,FirstOrDefault则不会报错.

     

     

    Average()方法

    该方法用于计算平均值

     

     

    Linq的联合查询

    将两个集合进行关联,然后从这两个集合中提取所需要的数据.

    语法格式:

    var  data  =  from  变量1  in  集合1

                   from  变量2  in  集合2

                   where  变量1.属性  ==  变量2.属性

                   select  new { ...  ...}

    提示:可以将N个集合进行关联(N>=2)

    示例代码:

     

     

    Sum()

    Sum(Func<T, K>)

    其中T为参数的类型,K为返回值的类型.

    Sum()方法用于对数据进行求和运算.

     

     

    OrderBy()OrderByDescending()

    这两个方法用于实现对数据进行排序(升序和降序)

     

     

    group by分组

    分组的标准语法:

    var  data  =  from  变量1  in  集合对象

                   group  变量1  by  变量1.属性  into  变量2

                   select  变量2;

    注意:使用group by分组后,将不能使用之前的变量1,需要通过into关键字定义一个新的变量2.新的变量指代的是分组后的每一组.

    关于分组的示例

      

     

    其他:

    在进行数据查询时,.net framework为我们提供了2套方案:

    一种是使用标准的linq查询语法=>

    (frominselectwhereorderbyascdeningdescendinggroupyintojoin);

    另一种方案是使用扩展方法=>

    (WhereSelectFirstOrDefaultCountSumAverageMaxMinOrderByOrderByDescendingGroupByLastLastOrDefault)

    当然,我们也可以将2种混合起来使用.

     

     ending......

    作者:易墨
    个人小站:http://www.yimo.link
    纯静态工具站点:http://tools.yimo.link/
    说明:欢迎拍砖,不足之处还望园友们指出;
    迷茫大概是因为想的太多做的太少。

  • 相关阅读:
    JAXB和XStream比较
    CButtonST类公共接口函数的介绍
    為什麼我的派生按鈕的自畫ownerdraw功能總是出錯?
    vc里使用GDI+
    cdecl, stdcall, pascal,fastcall 都有什么区别,具体是什么调用约定?
    SDK编程中窗口ID,句柄,指针三者相互转换函数
    __declspec,__cdecl,__stdcall都是什么意思?
    OnDraw()和OnPaint()
    栈 堆 区别
    MSDN for Visual Studio 6.0 高速下载地址
  • 原文地址:https://www.cnblogs.com/morang/p/3947558.html
Copyright © 2011-2022 走看看