只想访问实现IEnumerable的对象中的第一个元素,该怎么做?
答案 0 :(得分:7)
不幸的是,您无法在仅实现IEnumerable
的内容上使用LINQ扩展方法。但是,您可以使用.Cast<object>()
将其转换为IEnumerable<object>
,然后使用以下方法。以下假设某些collection
IEnumerable<T>
的{{1}}类型为T
:
要访问第一个元素,如果没有则抛出异常:
collection.First()
要访问第一个元素并获取类型的默认值(如果没有):
collection.FirstOrDefault()
对于引用类型(声明为null
的类型,例如class
,string
,Stream
等),类型的默认值为Bitmap
。值类型的“零值”(声明为struct
或enum
的类型,例如int
,bool
,DateTime
等。
仅查明是否存在第一个元素:
collection.Any()
所有这三个都可以将lambda表达式作为条件,例如.First(x => x.Name == "x")
,相当于.Where(x => x.Name == "x").First()
。
答案 1 :(得分:4)
使用FirstOrDefault方法
using System.Linq;
int[] numbers = { };
int first = numbers.FirstOrDefault();