码迷,mamicode.com
首页 > 其他好文 > 详细

LINQ常用扩展方法

时间:2014-06-14 15:24:23      阅读:429      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   tar   color   

下面的方法都是IEnumerable<T>的扩展方法:

  1. Average计算平均值; Min最小元素;Max最大元素;Sum元素总和; Count元素数量;
  2. Concat连接两个序列;//Unoin all
  3. Contains序列是否包含指定元素
  4. Distinct取得序列中的非重复元素
  5. Except获得两个序列的差集
  6. Intersect获得两个序列的交集
  7. First取得序列第一个元素
  8. Single取得序列的唯一一个元素,如果元素个数不是1个,则报错;!!!严谨的程序。
  9. FirstOrDefault 取得序列第一个元素,如果没有一个元素,则返回默认值
            int[] values1 = { 3, 5, 9, 8, 20 };
            int[] values2 = { 9, 13, 9, 8 };
            var e1 = values1.Intersect(values2);//Intersect()输出values1与values2两个集合的交集元素
            foreach (var i in e1)
            {
                Console.WriteLine(i);
            }//输出9  8
            int[] values1 = { 3, 5, 9, 8, 20 };
            int[] values2 = { 9, 13, 9, 8 };

            int i = values1.ElementAt(3);//序号为3的元素,从0开始数
            Console.WriteLine(i);//输出8
1             int[] values1 = { 3, 5, 9, 8, 20 };
2             int[] values2 = { 9, 13, 9, 8 };
3 
4             int i = values1.First();//Last()最后一个
5             Console.WriteLine(i);//3
            int[] values3 = {3};
            int i = values3.Single();
            //唯一一个,如果序列中有0个或者多于一个元素,否则报错
            Console.WriteLine(i);//输出3

Linq只能用于范型的序列,IEnumerable<T>!!对于非范型,可以用Cast或者OfType IEnumerable的方法:

IEnumerable的方法

Cast<TResult>:由于Linq要针对范型类型操作,对于老版本.Net类等非范型的IEnumerable序列可以用Cast方法转换为范型的序列。

ArrayList l;

IEnumerable<int> il = l.Cast<int>();

OfType<TResult>:Cast会尝试将序列中所有元素都转换为TResult类型,如果待转换的非范型序列中含有其他类型,则会报错。OfType则是只将序列中挑出指定类型的元素转换到范型序列中。

Linq的效率怎么样:(小数据量、对性能要求不高的环节用linq很方便,而且延迟加载机制降低了内存占用,比一般人写的程序效率都高)

 1             DataTable dt = null;
 2             //if (dt.Rows.Count != 1)
 3             //{
 4             //    throw new Exception("不止一条");
 5             //}
 6             //DataRow row = dt.Rows[0];
 7 
 8             //改进之~
 9             //Cast用来将非泛型的的序列转换为泛型的序列
10             //dt.Rows是非泛型的序列通过Cast<DataRow>()转化成泛型的序列
11             //Single取得序列的唯一一个元素!
12             DataRow row = dt.Rows.Cast<DataRow>().Single();
            object[] values = { 3, 5, 9, 8, 10 };
            //Cast<int>()将object数组转化为泛型的数组
            Console.WriteLine(values.Cast<int>().Max());//输出10
1             object[] values = { 3, 5, 9, 8, 10,"aa"};
2             //Console.WriteLine(values.Cast<int>().Max());//会报错,不能转换成功
3 
4             //将values数组中是int类型的元素转换成泛型数组,不是的元素排除在外
5             Console.WriteLine(values.OfType<int>().Max());//输出10
1             object[] values = { 3, 5, 9, 8, 10,"aa"};
2 
3             //OfType是挑出符合类型的进行转换
4             foreach (var i in values.OfType<string>())
5             {
6                 Console.WriteLine(i);
7             }//输出aa

 

LINQ常用扩展方法,布布扣,bubuko.com

LINQ常用扩展方法

标签:style   class   blog   code   tar   color   

原文地址:http://www.cnblogs.com/skyl/p/3788083.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!