Linq语言集成查询

Linq就是Language Integrated Query的缩写,即语言集成查询,是微软在.Net  3.5中提出的 一项新技术, Linq主要包含4个组件——Linq To Objects、Linq To XML、Linq To DataSet 和Linq To SQL。

我们操作linq一般来说有两种方式,一种是lamdba表达式+扩展方法,还有一种就是表达式,表达式方式跟sql差不多,区别就是我们这是按照sql执行顺序来的,比如:sql写法就是select row from tb,表达式的写法就是 from tb select row这样

下面我们来演示lamdba、表达式和普通方法的区别:

static void Main(string[] args)
{
    var list = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

    //lamdba 扩展方法
    var counts1 = list.Where(t => t % 2 == 0).Count();
    //表达式
    var counts2 = (from t in list
                    where t % 2 == 0
                    select t
                    ).Count();
    //表达式
    var counts3 = 0;
    for (int i = 0; i < list.Length; i++)
    {
        if (list[i] % 2 == 0)
        {
            counts3++;
        }
    }
    Console.WriteLine("lamdba方式输出:{0}", counts1);
    Console.WriteLine("表达式方法输出:{0}", counts2);
    Console.WriteLine("一般方式输出:{0}", counts3);
    Console.Read();
}
lamdba方式输出:5
表达式方法输出:5
一般方式输出:5

查询操作符(扩展方法+lambda),扩展方法  扩展的事IEnumerable<T>接口。所以linq的基础都是集合要继承IEnumerable<T>。

过滤:where,Find,FindAll,FindLast,First<T>,FirstOrDefault<>

统计函数:Count,MIn,Sum,Max

排序:OrderBy,OrderByDescending

跳过前面多少条数据取余下的数据:SKIP,如:list.Skip(rows * (pages - 1)),就是我们一般用的分页了

从开始起获取指定数量的数据:TAKE

模糊匹配:Contains

分组:GroupBy       

连接查询:Join

投影:select(select t或者select(t=>new{t.1,t.2}))

2,查询表达式

From [type] id in source

[join [type] id in source  on expr equals expr [into subGroup]]

[from [type] id in source|let id=expr | where condition]

[orderby ordering,ordering,ordering,ordering...]

select select expr | group expr by key

[into id query]

 tips:type是可选的,id是数据源集合中的一项,source是数据源集合,   其实是在一直循环source,每次循环把值放入select后面

 

expr表示一个表达式,subGroup是一个临时变量,继承自IGroup,代表一个分组。

可以有多个form,多个where,set指定临时变量

可以有0-多个排序 orderby a descing orderby b。 orderby a descing ,b,c

select  new投影(匿名类,返回的类型用var   因为他生成的时候一后台定义的类型集合),group 类型 by 具体属性。标准linq  前面一般写一个var(不确定类型)。              一个查询表达式必须以select或者group by结束。select后跟要检索的内容。group by 是对检索的内容进行分组

group by 他后面只能跟 into is as 关键字,常用into 关键字放入临时数据源 然后在select 投影。

into放入临时数据源

Let 设置变量

注意:这种查询表达式会编译成上面的扩展方法+lambad。这种是一个语法糖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值