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)

 

晚上有空再来写。。。。。。。。。。。

 

 

 

 

    

 

 

 

 

                                           

posted on 2012-10-30 12:57  韦爵爷++  阅读(326)  评论(0)    收藏  举报

导航