初探LINQ(LINQ to Object)

linq是c#3.0语言中鑫增加的一个扩展呢,linq可以处理非常大的对象集合。linq除了提供一种简洁的查询语言,指定要搜索的对象以外,linq还提供了许多扩展方法,更便于排序,组合和计算查询结果的统计数据。

1.linq的变体(linq to objects、linq to sql、linq to xml)

linq to objects:为任意的c#内存对象提供查询,例如:数组、列表和其他集合类型。

2.第一个linq查询

   eg: string[] names = {"alonso","zheng","smith","jones","smythe","mary"};

     查询var results=from n in names where n.StartsWith("m") select n;

     排序查询结果: var results=from n in names where n.StartsWith("m") orderby n select n;

     按姓名中的最后一个字母排序:var results=from n in names where n.StartsWith("m") orderby n.Substring(n.Length-1) select n;

     使用方法语法排序:var results=names.OrderBy(n => n).Where(n => n.StartsWith("s"));

     注:大多数使用方法语法的linq方法都要求传送一个方法或函数,来计算查询表达式。方法/函数参数以委托的形式传送,他一般引用一个匿名方法。

      n=>n<1000     运算符=>是~运算符  意思是:如果n小于1000该函数就返回一个true,否则返回false,函数是没有名称的匿名函数。

      查询复杂对象var results=from n in names where n.Region=="Asia" select n;  region是数据源的属性

                    var results=from n in names where n.Region=="Asia" select n.City;  region是数据源的属性  只显示符合条件的city那个列。注意:不可以显示多个 。

     单值选择查询:var results=from n in names where n.Region=="Asia" select n.distinct()

    any、all、多级排序(ThenBy)

(1)用var关键字申明结果变量 (2)指定数据源:from子句 (3)指定条件:where子句 (4)指定元素:select子句 (5)排序:orderby(descending降序) 

3.方法

   take(5)对应sql中的top表示前5位

   Skip(5)表示前5个结果以外的数据

   First()它返回结果集中第一个匹配给定条件的元素

  FirstOrDefault()返回的结果集中没有能匹配给定条件的,不会显示异常

4.Join查询

   eg:var results=from n in names join o in orders on n.ID equals o.ID  select n; 

 

posted @ 2013-02-18 14:43  luyujie_may  阅读(151)  评论(0编辑  收藏  举报