Linq:Language integrated query
linq是C#语言的一个扩展,可以将数据查询直接集成到编程语言本身当中。linq解决了处理非常大的数据集合的问题。
1、第一个Linq例子:(Linq查询语法)
using System.Linq;
var querys=from p in AppInfo
where p.AppType=="AAA"
select p);
2、Linq方法语法
var querys=AppInfo.Where(x=>x.AppType=="AAA");
3、排序查询结果(Linq查询语法)
var querys=from p in AppInfo
where p.AppType=="AAA" //查询条件
orderby p.StarTime //按开始时间排序(升序排列)
select p);
-----------------
var querys=from p in AppInfo
where p.AppType=="AAA" //查询条件
orderby p.StarTime descending //降序排列
select p);
-----------------
var querys=from p in AppInfo
where p.AppType=="AAA" //查询条件
orderby p.name.Substring(p.name.length-1) //根据表达式排列
select p);
4、排序查询结果(Linq方法语法)
var querys=AppInfo.OrderBy(n=>n)
.Where(x=>x.AppType=="AAA");//按自身元素排序,但是这里行不通,只取一种表示形式
-------------------
var querys=AppInfo.OrderByDescending(x=>x.StratTime)
.Where(x=>x.AppType=="AAA");
-------------------
var querys=AppInfo
.OrderBy(x=>x.name.Substring(x.name.length-1))
.Where(x=>x.AppType=="AAA");
5、聚合运算符
Count();
Max();
Min();
Average();
Sum();
6、投影:在查询中创建新对象(Linq查询语法)
投影:是在linq查询中从其他数据类型中创建新的数据类型的技术术语
select关键字为投影运算符
var querys=from c in customers
where c.Region=="Asia"
select new {c.City,c.Country,c.Sales};//必须为new{}的形式,不可以select c.City,c.Country,c.Sales,会报错。此处为创建的匿名类型的新对象
7、投影:在查询中创建新对象(Linq方法语法)
var querys=customers.Where (x=>x.Region=="Asia")
.Select(x=>new {x.City,x.Country,x.Sales};
注:一般情况下各种方法的使用顺序并没有严格规定,但是当后面用到的字段在前面没有被提及时,可能会报错,因此也需要查阅顺序是否正确
8、单值选则查询
var querys=customers.Select(x=>x.City).Distinct();//去重
9、Any()和All()方法
确定数据是否满足某个条件Any(),或者确保所有数据都满足某个条件All()
10、多级排序(Linq查询语法)
var querys=from c in customers
orderby c.City,c.Country,c.Sales
select c;//依次按给定的字段排序
11、多级排序(Linq方法语法)
var querys=customers
.Orderby (C=>c.City)
.ThenByDescending(c=>c.Country)
.ThenBy(c=>c.Sales)
.Select(c=>new{c.ID,c.City,c.Region});//依次按给定的字段排序
12、组合查询
var query= from c in customers
group c by c.Region into cg
select new{TotalSales=cg.Sum(c=>c.Sales),
Region=cg.Select(c=>c.Region)}
13、Take()和Skip()
Take()从查询结果中提取前n个结果
Skip()跳过前n个结果,返回剩余结果
var querys=customers
.Orderby (C=>c.City)
.ThenByDescending(c=>c.Country)
.ThenBy(c=>c.Sales)
.Select(c=>new{c.ID,c.City,c.Region})
.Take(5);//取前5条数据
14、First()和FirstOrDefault()
取第一个值,或者区第一个值或默认值
15、Linq集运算符
Intersect(),Union()等
16、Join查询
var query= from c in customer
join o in orders on c.ID equals o.ID
select new {c.ID,c.City,SalesBefore=c.sales,
NewOrder=o.Account,
SalesAfter=c.Sales+o.Account}