Linq的用法

•能做什么,将int数组中大于20的元素排序输出:
 int[] values = { 30, 5, 99, 77, 102, 8, 12, 35 };
            var result = from item in values
                         where item > 20
                         orderby item
                         select item;
•LINQ(读音link, .Net3.0新特性):Linq To SQL(过时)、Linq To Object、Linq To XML、Linq To entity,目的:以统一的方式对数据进行操作。看起来非常像SQL语句,但是和SQL无关。
•如果写程序的时候调用不了Linq的方法,就看看是否using了system.Linq。
 
下面的方法都是IEnumerable<T>的扩展方法:
Average计算平均值; Min最小元素;Max最大元素;Sum元素总和; Count元素数量;
Concat连接两个序列;//Unoin all
Contains序列是否包含指定元素;
Distinct取得序列中的非重复元素;
Except获得两个序列的差集;
Intersect获得两个序列的交集;
First取得序列第一个元素;
Single取得序列的唯一一个元素,如果元素个数不是1个,则报错;!!!严谨的程序。
FirstOrDefault 取得序列第一个元素,如果没有一个元素,则返回默认值;
Linq只能用于范型的序列,IEnumerable<T>,对于非范型,可以用Cast或者OfType
IEnumerable的方法:
Cast<TResult>:由于Linq要针对范型类型操作,对于老版本.Net类等非范型的IEnumerable序列可以用Cast方法转换为范型的序列。ArrayList l; IEnumerable<int> il = l.Cast<int>();
OfType<TResult>:Cast会尝试将序列中所有元素都转换为TResult类型,如果待转换的非范型序列中含有其他类型,则会报错。OfType则是只将序列中挑出指定类型的元素转换到范型序列中。
Linq的效率怎么样(小数据量、对性能要求不高的环节用linq很方便,而且延迟加载机制降低了内存占用,比一般人写的程序效率都高)
 
在linq的方法中还可以使用
lambda表达式,
•lambda语法详解:s为参数列表,不需要标注类型,因为变量声明中类型已经说明了。=>后的大括号是方法体。
•如果方法有返回值,并且代码只有一行可以简写i=>i>0,等价于i=>{return i>0;}。
•有了lambda代码写的可以更简单。linq、asp.net MVC中用的非常多。
 例如: int[] values = { 2, 4, 6, 10, 9, 8, 7 };
values.where(i=>i>3);//取出集合中所有大于3 的数。
 values.select(i=>i*2);//将集合中的每个元素诚意2,select决定元素以什么样的类型输出。
 values。orderby(i=>i);//对集合中的元素以升序进行排序。
posted @ 2013-08-15 17:51  code-person  阅读(597)  评论(0编辑  收藏  举报