您是第 Web Page Tracking 位访客

水~墨~

昂首阔步,不留一点遗憾!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
Technorati 标签: Linq

Linq 是C# 3.0 新增的好东西,用来处理对象集合,可用来查询数据库,XML文档

主要分为    Linq To Objects (用来处理内存对象集合),也是本节的重点

               Linq TO  SQL

               Linq TO  XML

               Lnq  To  Providers

 

       1.  基本语法

            var   n=

                        from   数据源

                        where  ..

                        select   n;

 

           最后 foreach( var  a  in   n)  循环结果集,例子将展示最基本的用法.

 

            

例子

 

声明字符串数组 strNames;  然后linq表达式  from 指定数据源,where 指明条件,select n 原则结果集

 

最后通过 foreach 获取结果集,延迟执行!将名字中以“小”开头的名字打印出来。

 

 

2. 用Linq方法语法和λ表达式(n=>xx)

             1) λ表达式

         n=>n<100    就是匿名函数,n为参数,n<100是函数或者方法体。若n<100则返回Ture

             2)Linq方法语法

                 同样例子查找以“小”开头的人名

 

                var  queryResult=strNames.where(n=>n.startwith("小"));

Where方法

 

 

                方法:OrderBy

OrderBy方法

 

 

 

 

 

3. 合计运算符

Count(),Min(),Max(),Average(),Sum()

        

 

合计运算符

 

 

 

查询复杂对象

 


 

  
4. 投影:查询中创建对象

    select  n+1

    select  n.ToUpper()

    错误:select  n.name,n.city    只允许select one.所以当要查询多个数据时候应该创建对象

                                                         select   new {n.name,n.city}

 

 

 

           

 

 

 

投射方法语法-在查询中创建对象

 

 

 

5. 单值选项           select(n=>new {  xx}).Distinct();

 

6. Any()和All()       查找数据源是否有,有就Ture,否则false

          例:查找 是否有 集合项C的country 是否为 “USA”

 

             bool  anyUsa=Customers.Any(n=>n.country=="USA");

 

 

7. 多级排序        OrderBy(x).ThenBy(x)

多级排序

 

 

 

8.  组合查询   

 

         from   c   in   xx

        group  c by c.Region  into cq

                    select   new {

                                       TotalPrice=cq.Sum(n=>c.sales),

                                        Region=cq.key

                                      }

 

 

9. Take()  类似 MSSQL 的Top(),返回前n个结果

    Skip() 跳过前n个结果集

 

posted on 2012-02-27 12:00  水墨.MR.H  阅读(228)  评论(0编辑  收藏  举报
知识共享许可协议
本博客为水墨原创,基于Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的水墨(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。