如何访问实现IEnumerable的对象中的第一个元素

use*_*949 1 .net c#

只想访问实现IEnumerable的对象中的第一个元素,该怎么做?

Tim*_*mwi 7

不幸的是,你不能在仅实现的东西上使用LINQ扩展方法IEnumerable.但是,您可以使用.Cast<object>()它将其转换为a IEnumerable<object>然后使用以下方法.以下假定某些collection类型IEnumerable<T>T:

要访问第一个元素,如果没有则抛出异常:

collection.First()
Run Code Online (Sandbox Code Playgroud)

要访问第一个元素并获取类型的默认值(如果没有):

collection.FirstOrDefault()
Run Code Online (Sandbox Code Playgroud)

类型的默认值是null对于引用类型(声明为类型class,例如string,Stream,Bitmap等)和"零值"为值类型(类型声明为structenum,例如int,bool,DateTime等等).

只知道是否存在第一个元素:

collection.Any()
Run Code Online (Sandbox Code Playgroud)

所有这三个都可以将lambda表达式作为条件,例如.First(x => x.Name == "x"),相当于.Where(x => x.Name == "x").First().