23LINQ运算符返回其它类型实例汇总

  IEnumerable<T>返回其它集合类型

ToArray()
ToList()
ToDictionary()
ToLookUp()

 

  返回集合中的元素

□ ElementAt()返回某个位置上的元素

            int[] arr = {1, 2}; 
            int item = arr.ElementAt(0); 
            Console.WriteLine(item.ToString()); 
            Console.ReadKey();

结果: 1

 

□ ElementAtOrDefault()某位置上的元素不存在时,返回默认值,引用类型返回null

            int[] arr = {1, 2}; 
            int item = arr.ElementAtOrDefault(5); 
            Console.WriteLine(item.ToString()); 
            Console.ReadKey();

结果: 0

 

□ First()返回满足条件的第一个元素,不存在,抛异常

            int[] arr = {1}; 
            int item = arr.First(x => x%2 == 0); 
            Console.WriteLine(item.ToString()); 
            Console.ReadKey();

16

 

□ FirstOrDefault()返回满足条件的第一个元素,不存在,返回默认值

            int[] arr = {1}; 
            int item = arr.FirstOrDefault(x => x%2 == 0); 
            Console.WriteLine(item.ToString()); 
            Console.ReadKey();

结果: 0

 

□ Last()和LastOrDefault()类同于First()和FirstOrDefault()

□ Single()只有一个满足条件,满足条件超过1个抛异常

            int[] arr = {1, 1, 2}; 
            int item = arr.Single(x => x == 1); 
            Console.WriteLine(item.ToString()); 
            Console.ReadKey();

17

 

● 当一个集合中只有一个元素,Single()可以返回这个唯一的元素

            int[] arr = {1}; 
            int item = arr.Single(); 
            Console.WriteLine(item.ToString()); 
            Console.ReadKey();

结果: 1

 

□ SingleOrDefault()有一个或0个满足条件,如果2个满足条件返回默认值

            int[] arr = {1,2}; 
            int item = arr.SingleOrDefault(x => x == 5); 
            Console.WriteLine(item.ToString()); 
            Console.ReadKey();

结果: 0

 

  返回标量值

□ Count()返回集合元素数量,类型为整型

            int[] arr = {1,2}; 
            int query = arr.Count(); 
            Console.WriteLine(query.ToString()); 
            Console.ReadKey();

结果: 2

 

□ LongCount()返回集合元素数量,类型为long

            int[] arr = {1,2}; 
            long query = arr.LongCount(); 
            Console.WriteLine(query.ToString()); 
            Console.ReadKey();

结果: 2

 

□ Max()返回最大项     

            int[] arr = {1,2}; 
            int query = arr.Max(); 
            Console.WriteLine(query.ToString()); 
            Console.ReadKey();

结果: 2

 

□ Min()返回最小项

            int[] arr = {1,2}; 
            int query = arr.Min(); 
            Console.WriteLine(query.ToString()); 
            Console.ReadKey();

结果: 1

 

□ Average()返回平均值

            int[] arr = {1,2}; 
            double query = arr.Average(); 
            Console.WriteLine(query.ToString()); 
            Console.ReadKey();

结果: 1.5

 

□ Sum()返回总和

            int[] arr = {1,2}; 
            int query = arr.Sum(); 
            Console.WriteLine(query.ToString()); 
            Console.ReadKey();

结果: 3

 

□ Aggregate()返回自定义的聚合,对原始集合中的元素进行操作返回结果

            int[] arr = {1,2}; 
            int query = arr.Aggregate(0, (total, x) => total + (x*2)); 
            Console.WriteLine(query.ToString()); 
            Console.ReadKey();

结果: 6    

 

□ Contains()判断某一元素是否存在

            int[] arr = {1,2}; 
            bool query = arr.Contains(1); 
            Console.WriteLine(query.ToString()); 
            Console.ReadKey();

结果: true

 

□ Any()集合中只要有一个元素满足就返回true

            int[] arr = {1,2}; 
            bool query = arr.Any(x => x == 2); 
            Console.WriteLine(query.ToString()); 
            Console.ReadKey();     

结果: true

 

□ All()只要有一个元素不满足条件就返回False

            int[] arr = {1,2}; 
            bool query = arr.All(x => x >= 2); 
            Console.WriteLine(query.ToString()); 
            Console.ReadKey();

结果: false


 
□ SequenceEqual()逐项比较两个集合中的元素,当元素数目相同且相同位置元素也相同,返回true

             int[] arr = {1,2}; 
            int[] arr1 = {1}; 
            bool query = arr.SequenceEqual(arr1); 
            Console.WriteLine(query.ToString()); 
            Console.ReadKey();

结果: false

 

  System.Linq.Enumerable的其它静态方法

 

创建空的string集合:
IEnumerable<string> list = Enumerable.Empty<string>();

创建空的int集合:
IEnumerable<int> list = Enumerable.Empty<int>();

创建连续的int集合:
IEnumerable<int> list = Enumerable.Range(0,3);

创建重复的int集合:
IEnumerable<int> list = Enumerable.Repeat(0,3);

 

参考资料:
《.NET之美》--张子阳,感谢写了这么好的书!

posted @ 2014-04-01 17:34  Darren Ji  阅读(412)  评论(0编辑  收藏  举报

我的公众号:新语新世界,欢迎关注。