首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在C#中将IEnumerable <T>转换为List <T>?

要在C#中将IEnumerable <T>转换为List <T>,您可以使用以下方法:

  1. 使用Linq库中的ToList()方法:using System.Linq; IEnumerable<T> enumerable = ...; List<T> list = enumerable.ToList();
  2. 使用List <T>的构造函数:IEnumerable<T> enumerable = ...; List<T> list = new List<T>(enumerable);
  3. 使用foreach循环遍历IEnumerable <T>并将每个元素添加到List <T>中:IEnumerable<T> enumerable = ...; List<T> list = new List<T>(); foreach (T item in enumerable) { list.Add(item); }

这些方法都可以将IEnumerable <T>转换为List

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C# 学习笔记(15)—— C# 4.0

C# 2.0 确实是不支持的,但因为有了这样的需求,微软便适应地做出了改进,在 C# 4.0 中引入了泛型的协变性和逆变性 协变性 协变性指的是泛型类型参数可以从一个派生类隐式地转换为基类 C# 4.0...引入out关键字来标注泛型参数,以示支持协变性,为了更好的说明,下面使用 .Net 类库中的public interface IEnumerable接口为例,做泛型协变性的演示: class...(listObject); // 失败 } } 协变性很好理解,派生类可以隐式转换为基类,反之则失败 逆变性 逆变性是指泛型类型参数可以从一个基类隐式地转换为派生类,C# 4.0 引入in关键字来标记泛型参数...并不是所有类型都支持泛型类型参数的协变和逆变性,下面总结了使用这两个特性时需要注意的地方 只有借口和委托才支持协变和逆变(Func、Action),类或泛型方法的类型参数都不支持协变和逆变...协变和逆变只适用于引用类型,值类型不支持协变和逆变(因为可变性存在引用转换的过程,而值类型变量存储的就是对象本身,并不是对象的应用),所以List无法转换为IEnumerable<object

18520

详解C# ListT>的Contains、Exists、Any、Where性能对比

简介 本文主要讲解C# List的Contains,Exists,Any,Where性能对比问题,通过对比测试实际运行时间来研究它们之间的优劣性。...正文 在实际的开发中,我们经常会需要在一个List中查找指定的元素。而C#中提供了多种查找方法,下面我们来看一下它们之间的性能对比。...1、Contains方法 Contains方法的作用是检查List中是否包含指定元素,其代码实现如下: public bool Contains(T item); 其中,item为要查找的元素。...4、Where方法 Where方法用于筛选符合指定条件的元素,其代码实现如下: public IEnumerable Where(Func predicate); 使用方法如下:...推荐阅读: 一份阅读量突破10万+的C#/.NET/.NET Core面试宝典(基础版) 【微信自动化】使用c#实现微信自动化 细聊C# AsyncLocal如何在异步间进行数据流转 从未来看C

70930

.NET面试题系列 - IEnumerable的派生类

注意C#没有List,只有IList,IList和List。其中第三个继承第二个。第一个是第二个的非泛型版本。ArrayList则继承第一个。...方法 提供add, remove, insert等功能 提供转换为IQueryable方法 LinkedList 没有索引,通过Find方法 ICollection 内部使用链表实现的列表...在C#中使用foreach将会隐式的调用MoveNext方法。可以通过查看IL得知foreach运作的全过程。 IEnumerable是整个LINQ的基础。...整个LINQ都基于IEnumerable的扩展方法之上。C#大部分数据结构都实现了IEnumerableIEnumerable的派生类由于没有泛型,所以基本不考虑使用。...它又有两个主要的派生类Array和ListList的内部实现是一个数组而不是链表。LinkedList才是C#的链表实现。LinkedList不实现IList接口。

1.7K20

.NET中那些所谓的新语法之三:系统预定义委托与Lambda表达式

其次,编译器自动将无返回值的匿名方法转换为了new Action对象。...当然,如果是有返回值的匿名方法则会转换为指定类型的new Func()对象,这里因为ForEach只接受无参数的委托实例或方法,所以如果传入了有返回值的匿名方法则会报错。...// // 返回结果: // 一个 System.Collections.Generic.IEnumerable,其元素为对 source 的每个元素调用转换函数的结果...此委托由 Array 类的 Sort(T[], Comparison) 方法重载和 List 类的 Sort(Comparison) 方法重载使用,用于对数组或列表中的元素进行排序...③实例化Comparison委托变量,并将方法指针传入该委托;     ④调用List实例的Sort方法,并传入Comparison委托实例;     其中,前面两步①和②可以通过反编译后的C#代码获知

76830

C#8.0宝藏好物Async streams

如果你真的使用强类型IEnumerable/IEnumerator来产生/消费可枚举类型,会发现要写很多琐碎代码。 C#推出的yield return迭代器语法糖,简化了产生可枚举类型的编写过程。...(编译器将yield return转换为状态机代码来实现IEnumerable,IEnumerator) yield 关键字可以执行状态迭代,并逐个返回枚举元素,在返回数据时,无需创建临时集合来存储数据...(编译器将foreach抓换为强类型的方法/属性调用) IEnumerable src = ...; IEnumerator e = src.GetEnumerator(); try { while...C#提供了迭代、异步的快捷方式,能否将两者结合? 两者结合的效果就是:我们希望在数据就绪时,接收并处理数据,但不会以阻塞cpu的形式等待,这在lot流式数据中很常见。...static async IAsyncEnumerable FetchAllHtml() { var tasklist= new List>();

93430

五分钟看完,彻底理解C#的协变逆变

其实这是c#的老知识点了,但是今天发现同事对这个竟然还一知半解,就和他们讲解了下,顺便也回顾了下,同事我也把我对这个的全部理解,融化成几分钟的讲解,保证大家5分钟内全部理解,看不懂来打我。...//我有一个集合 //我手上有一批学生 IEnumerable students = new List(); //我要他们先做人 IEnumerable { } //直接报错 IWork work = new Work();; 现实给了我们当头一棒,这时候,我们应该找到 IEnumerable...那么我们的核心依据就是: 里氏替换——C#里,子类父类可以直接隐式转换 就这么短,就完事了?对,记住就行!!! Out/In 输入输出? 讲到这里,我们继续忽悠,out是啥?来个翻译!不就是输出吗?...(先假设,再假设) In:那么根据核心依据,子类父类可以直接,入参如果限定是Person类型,那么你给我限定为Student或者任意的Person类型的派生类,我都是可以接受的,因为都是安全的,可以直接转换过来的

17120

在C++中反射调用.NET(三) 使用非泛型集合的委托方法C++中的列表对象list C++传递集合数据给.NET创建泛型List实例反射静态方法反射调用索引器当委托遇到协变和逆变C++CLI

也是继承 IEnumerable 的,所以可以当做非泛型对象在C++中访问,因此创建上面的委托方法是可行的。...创建泛型List实例 我们使用List来做集合对象,在C#中,我们可以通过下面的方式得到List泛型的类型,然后进一步创建泛型对象实例: Type t= typeof(List); 但是,对应的C+...+/CLI写法却无法通过编译: Type^ t=List::typeid; VS总是提示List缺少类型参数,不过像下面这样子是可以的: Type^ t2= List::typeid...的类型,但我们并不知道这个List具体的形参类型,所以这个泛型List还是无法直接使用,幸好,泛型List也是继承自非泛型的IList接口的,所以在 CreateGenericList 方法中将泛型List...在C++/CLI中,用nullptr表示空引用,跟C#的null作用一样。

9K100
领券