LINQ to Object——立即执行的Enumerable类方法

在前面说到LINQ to Object——延时执行的Enumerable类的方法,接下来说说LINQ to Object——立即执行的Enumerable类方法。

1.ToArray 序列转换成数组

            List<string> names_list = new List<string> { "张三", "范冰冰", "李冰冰", "迈克尔·杰克逊", "李四", "王五", "赵六", "田七" };
            string[] takenames_arry = names_list.ToArray();

            string[] takenames_arry2 = (from name in names_list
                                   select name).Take(4).ToArray();
            foreach (var name in takenames_arry2)
            {
                Console.WriteLine(name);
            }
            Console.WriteLine("----------------------------");
            Console.ReadKey();

运行结果:

2.ToList 序列转换成List<T>

            string[] names_array = { "张三", "范冰冰", "李冰冰", "迈克尔·杰克逊", "李四", "王五", "赵六", "田七" };
            List<string> takenames_list = names_array.ToList();

            List<string> takenames_list2 = (from name in names_array select name).Skip(4).ToList();
            foreach (var name in takenames_list2)
            {
                Console.WriteLine(name);
            }
            Console.WriteLine("----------------------------");
            Console.ReadKey();

运行结果:

3.ToDictionary 把序列转换为泛型Dictionary<TKey,TValue>

4.ToLookup 用于将序列转换为泛型Lookup<TKey,TValue>

5.SequenceEqual 比较两个序列是否相等

            bool sequence_equal = names_array.SequenceEqual(names_list);
            bool sequence_equal2 = names_array.Skip(1).Take(2).SequenceEqual(names_list.Take(3).SkipWhile(n => n.Length == 2));
            Console.WriteLine("{0},{1}", sequence_equal, sequence_equal2);
            Console.WriteLine("----------------------------");
            Console.ReadKey();

运行结果:

6.First 返回序列第一个满足条件元素

            var first_name = names_array.First();
            var first_name2 = names_array.First(n => n.Length == 3);
            Console.WriteLine("{0},{1}", first_name, first_name2);
            Console.WriteLine("----------------------------");
            Console.ReadKey();

运行结果:

7.FirstOrDefault 返回序列第一个满足条件元素,如果没有找到则返回默认值

            var first_or_default_name = names_array.FirstOrDefault();
            var first_or_default_name2 = names_array.FirstOrDefault(n => n == "123");
            Console.WriteLine("{0},{1}", first_or_default_name, first_or_default_name2);
            Console.WriteLine("----------------------------");
            Console.ReadKey();

运行结果:

8.Last 返回序列最后一个满足条件元素

            var last_name = names_array.Last();
            var last_name2 = names_array.LastOrDefault(n => n.Length == 3);
            Console.WriteLine("{0},{1}", last_name, last_name2);
            Console.WriteLine("----------------------------");
            Console.ReadKey();

运行结果:

9.LastOrDefault 返回序列最后一个满足条件元素,如果没有找到则返回默认值

            var last_or_default_name = names_array.LastOrDefault();
            var last_or_default_name2 = names_array.LastOrDefault(n => n == "123");
            Console.WriteLine("{0},{1}", last_or_default_name, last_or_default_name2);
            Console.WriteLine("----------------------------");
            Console.ReadKey();

运行结果:

10.Single 返回序列中唯一的元素,注意:如果序列中包含多个元素,会引发运行错误

            try
            {
                var single_name = names_array.Single();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.WriteLine("----------------------------");
            var single_name2 = names_array.Single(n => n == "张三");
            Console.WriteLine("{0}", single_name2);
            Console.WriteLine("----------------------------");
            Console.ReadKey();

运行结果:

11.SingleOrDefault 找出序列中满足一定条件的元素,注意:如果序列为空则返回默认值, 如果序列中包含多个多个元素会引发运行错误

            try
            {
                var single_or_default_name = Enumerable.Empty<int>().SingleOrDefault();
                Console.WriteLine("{0}", single_or_default_name);//不报错,如果序列为空就返回默认值
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.WriteLine("----------------------------");

            try
            {
                var single_or_default_name2 = names_array.SingleOrDefault();
                Console.WriteLine("{0}", single_or_default_name2);//报错,序列包含多行错误
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.WriteLine("----------------------------");

            var single_or_default_name3 = Enumerable.Empty<string>().DefaultIfEmpty("默认值").SingleOrDefault();
            Console.WriteLine("{0}", single_or_default_name3);
            Console.WriteLine("----------------------------");

            var single_or_default_name4 = names_array.SingleOrDefault(n => n == "123");
            Console.WriteLine("{0}", single_or_default_name4);
            Console.WriteLine("----------------------------");
            Console.ReadKey();

运行结果:

12.ElementAt 获得指定索引处的元素

            var element_at_name = names_array.ElementAt(3);
            Console.WriteLine("{0}", element_at_name);
            Console.WriteLine("----------------------------");
            Console.ReadKey();

运行结果:

13.ElementAtOrDefault 获得指定索引处的元素,如果超出索引,则返回元素类型的默认值

            var element_at_or_default_name = names_array.ElementAtOrDefault(5);
            var element_at_or_default_name2 = names_array.ElementAtOrDefault(10);
            Console.WriteLine("{0},{1}", element_at_or_default_name, element_at_or_default_name2);
            Console.WriteLine("----------------------------");
            Console.ReadKey();

运行结果:

14.All 序列中的所有元素是否都满足条件

15.Any 序列中的元素是否存在或满足条件

16.Contains 确定元素是否在序列中

17.Count 序列包含元素的数量

18.LongCount 获取一个Int64类型的元素数量

19.Aggregate 将序列元素进行累加

20.Sum 序列之和

21.Average 序列平均值

22.Min 序列的最小值

23.Max 序列的最大值

未完待续。。。。。。

原文地址:https://www.cnblogs.com/jiechou/p/9226494.html

时间: 2024-10-13 01:00:44

LINQ to Object——立即执行的Enumerable类方法的相关文章

LINQ to Object——延时执行的Enumerable类方法

LINQ to Object是针对实现了IEnumerable<T>的对象的LINQ.而在System.Linq.Enumerable类中,总共定义了40来个查询运算符----全部用扩展方法来实现,他们被称为标准查询运算符.每个查询运算符的执行行为不同,大致分为立即执行和延时执行.延时执行,顾名思义就是不是立即执行,即不是在查询语句定义的时候执行,而是在处理结果集(如遍历)的时候执行. 常用的延时执行的Enumerable类方法成员,具体如下: 1.Take用于从一个序列的开头返回指定数量的元

.NET面试题系列[13] - LINQ to Object

.NET面试题系列目录 名言警句 "C# 3.0所有特性的提出都是更好地为LINQ服务的" - Learning Hard LINQ是Language Integrated Query(语言集成查询)的缩写,读音和单词link相同.不要读成“lin-Q”. LINQ to Object将查询语句转换为委托.LINQ to Entity将查询语句转换为表达式树,然后再转换为SQL. LINQ的好处:强类型,相比SQL语句它更面向对象,对于所有的数据库给出了统一的操作方式. LINQ的一些

Linq to OBJECT延时标准查询操作符

1.Where 操作符用于限定输入集合中的元素,将符合条件的元素组织声称一个序列结果. 2.Select  操作符用于根据输入序列中的元素创建相应的输出序列中的元素,输出序列中的元素类型可以与输入序列中的元素类型相同,也可以不同.下面来看看Select方法的原型. 3.SelectMany 操作符用于根据输入序列中的每一个元素,在输出序列中创建相应的零个或者多个元素,与Select操作符不同,Select操作符会根据输入序列中的每一个元素创建一个对应的输出序列元素,而SelectMany操作符可

(第一篇) 一步一步带你了解linq to Object

要想学好linq to object 我们必须要先学习lambda 表达式,学习lambda 表达式呢我们必须了解匿名函数和匿名类,学习匿名函数,我们必须学会委托,这是本文的宗旨.下面开始第一步.在第一步开始之前,我们做点准备工作,建立一个学生类和一个班级类,类结构如下 public class Student { public int Id { get; set; } public int ClassId { get; set; } public string Name { get; set;

Linq To SQL和Linq To Object的批量操作InsertAllOnSubmit介绍

无论是Linq To SQL还是Linq To Object(Entity frameworks)它们都为开发人员提供了Insert操作,及Insert集合操作,即InsertOnSubmit和InsertAllOnSubmit,前者是将一个实体标记为一个插入状态,而后都是将一个集合标记为插入状态,... 无论是Linq To SQL还是Linq To Object(Entity frameworks)它们都为开发人员提供了Insert操作,及Insert集合操作,即InsertOnSubmit

解析LINQ To Object

1.解剖Linq to object   此文转载自http://www.cnblogs.com/irenebbkiss/p/4155480.html LINQ想必大家都不陌生了,它 的出现使得我们的代码变得更短.更优雅了.至于LINQ是什么,Linq to object这类的扩展方法到底做了些什么.我们使用的EF是如何实现的(如何解析Expression).我都将一一为大家分享下我的理解.如果有说得 不对的地方,也请大家指出.下面进入正题 大家先将代码左上角的using System.Linq

C#复习笔记(4)--C#3:革新写代码的方式(查询表达式和LINQ to object(下))

查询表达式和LINQ to object(下) 接下来我们要研究的大部分都会涉及到透明标识符 let子句和透明标识符 let子句不过是引入了一个新的范围变量.他的值是基于其他范围变量的.let 标识符=表达式; 首先展示一个不适用let操作符来使用的按用户名称长度来排序: ... var queryWithoutLet = from user in SampleData.AllUsers orderby user.Name.Length select user; foreach (User us

LINQ to Object

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Collections; 5 6 namespace Demo1 7 { 8 class Program 9 { 10 11 static void Main(string[] args) 12 { 13 Console.WriteLine("简单查询"); 14 string[] currentVideoGam

Linq to Object 的简单使用示例

语言集成查询 (LINQ) 是 Visual Studio 2008 中引入的一组功能,可为 C# 和 Visual Basic 语言语法提供强大的查询功能. LINQ 引入了标准易学的数据查询和更新模式,可以扩展该方法来支持任何类型的数据存储. Visual Studio 包括 LINQ 提供程序集,后者支持将 LINQ 与 .NET Framework 集合.SQL Server 数据库.ADO.NET 数据集和 XML 文档结合使用. LINQ特有的编程结构: 隐式类型本地变量:C#的va