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); }
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语句的区别:
浙公网安备 33010602011771号