Linq语句

1、常用语句

    form m in str select m;  

  from m in MyList from m2 in MyLIst2 select m;  嵌套查询

  from p in personList group by p.age; 使用group by 时可以不用select ,因为group 子句返回IGrouping<TKey, TElment>对象序列

  from p in PersonList orderby p.age descending,p.name select p ;

    from p in PersonList join car in CarList on p.cid equals car.cid select p; 有关系的数据源,使用join中间必须用equals不能用==

 基本语法
            int[] socres = { 90, 34, 23, 12, 81, 85, 23, 98, 43, 54, 60, 74 };
            IEnumerable<int> sQuery = from s in socres   //必须
                                      where s > 40       //可选
                                      orderby s descending//可选
                                      select s;          //必须
            var s1 = "";
            foreach(int s in sQuery)
            {
               s1 = string.Concat(s1, ",", s);
            }
            s1 = s1.TrimStart(',');
            int high = socres.Max();  //最高分数;


            //分组
            var q2 = from s in socres group s by s into q where q.Key > 10 select q ;
            var k1 = q2.ToList<IGrouping<int, int>>();
            var v = k1[0].Key;
例子

2、linq语言集成查询(Langguage Integrated Query)

  2.1 必须具体条件:实现IEnumerable<T>接口

  2.2 执行时期:返回标量的立即执行;返回IEnumerable对象(或其他序列)的,使用时才执行。

  2.3 linq查询范围:数据库、程序对象的集合、xml文档(这些数据类型都实现了linq查询的代码模块,叫做linq提供程序provider)

  简单例子

//查询的定义使用from和select关键字,但是直到最后的foreach语句请求其结果的时候才会被执行。
static void Main(){
    int[] numbers = {2, 12, 5, 15}; //数据源
    IEnumerable<int> lowNums = from n in numbers where n < 10 select n;//定义并存储查询
    foreach (var x in lowNums)    //执行查询,到这步才开始执行查询,使用的时候才开始执行
        Console.Write("{0}", x);
}
View Code

3、linq标准查询操作符

  Where OfType<TResult> 过滤操作符定义了返回元素的条件,只返回TResult类型的元素。

  Select、SelectMany

  OrderBy、ThenBy、OrderByDescending、ThenByDescending、Reverse 排序操作符改变所返回的元素的顺序

  Join、GroupJoin 连接运算符用于合并不直接相关的集合

  Group By 

  Any、All、Contains

  Take、Skip、TakeWhile、SkipWhile 分区操作符返回集合的一个子集

  Distinct,Union(合)、Intersect(交)、Except(差) Set操作符返回一个集合

  First、FirstOrDefault、Last、LastOrDefault、ElementAt、ElementAtOrDefault、Single、SingleOrDefault 这些元素操作符仅返回一个元素

  Count、Sum、Min、Max、Average、Aggregate 合计操作符计算集合的一个值。

  ToArray、ToEnumerable、ToList、ToDictionary、toType<T>:这些转换操作符将集合转换为数组、IEnumerable、IList、IDictionary等;

  Empty,Range(数字),Repeat(重复): 这些生成操作符返回一个新集合

4、linq的from子句和foreach语句的区别:

        - foreach指定了从第一个到最后一个按顺序访问集合中的项;from声明式的规定集合中的每个项都要别访问,但并没有假定以什么样的顺序;
        - foreach 在遇到代码时就执行其主体;而from什么也不执行,会创建可以执行查询的后台代码对象,只有在程序的可控制流遇到访问查询变量的语句时,才会执行查询。

 

posted on 2018-01-22 16:52  莫伊筱筱  阅读(1034)  评论(0)    收藏  举报