Linq查询语句
LINQ表达式要点:
1 linq表达式要以from开头
2 必须是select子句或者是group子句结尾
3 from子句, where子句,select子句,group子句, into子句,排序子句,let子句, join子句
4 子句示例:
4.1 from 变量名 in 数据源 where 条件 select 变量名
where子句是用来筛选元素
select子句是用来输出元素
例如:var ordersByCountry=from order in orders
where order.ShipCountry.Equels(country)
select order;
4.2 排序子句 OrderBy OrderBy.......Descending
例如:var OrderBy=from order in Orders
where order.shipCountry.equals(country)
orderby order.shipCountry,
orderby order.fregith descending
select order;
4.3 group子句 group子句返回的是一个基于IGroup<TKey,TElement>繁星接口的对象序列
例如:var orderGroup=from order in Orders
group orderby order.shipCountry //group子句返回的是一个集合
Dictionary<string,List<Orders>> orderList=new Dictionary<string,list<Orders>();//效率不高
foreach(var or in orderGroup){
orderlist.add(or.key,or.ToList<Orders>());
}
4.4 join子句: 如果数据源中的一个元素和另外一个数据源中的元素相等,这两个数据源可以用join子句进行关联(表连接)
join子句是用equals关键字进行比较的,而不是常用的==(双等于号)。
var OrdersJoinCustomer=from order in Orders
join customer in Customer
on order.customerId equals customer.customerId
select new {
orderId=order.OrderId,
customerId=customer.customerId,
companyName=customer.companyName
};
4.5 into子句:into子句提供一个临时标识符,它存储了into子句前面查询的结果,是后面子句可以方便的使用,可以对其进行查询,排序,投影等操作。
var OrdersJoinCustomer=from order in Orders join customer in Customer on order.customerId equals customer.customerId
select new {
orderId=order.OrderId,
customerId=customer.customerId,
companyName=customer.companyName
}
into ord orderby customer.companyName select ord;
4.6 let子句:let子句能创建一个临时变量,用来存储linq表达式中表达式的计算结果。需要注意的是:一旦临时变量被创建,就不能被修改。
string shipCountry="adadwakw";
var orderLet=from order in Orders
let s=order.shipCountry.Substring(0,1)
where s=shipCountry
select order;
5 linq to object (延迟查询)
限定操作符(where)
投影操作符(select/selectMany)
分区操作符(take/takeWhile/skin/skinWhile)
串联操作符(concat)
排序操作符(orderby/orderbyDescending/thenby/thenbyDescending/reverse/ )
连接操作符(join / groupJoin)
分组操作符(GroupBy)
集合操作符(Distinct/Union/intersect/Except)
转换操作符(cast/ofType/asEnumberale)
元素操作符(DefaultEmpty)
生成操作符(Range/Repeat/Empty)
晚上有空再来写。。。。。。。。。。。
浙公网安备 33010602011771号