如何在没有迭代的情况下获取 IEnumerable 的第一个元素?

How to take the first element of IEnumerable without iteration?

我需要获取 IEnumerable 的第一个元素,但没有迭代。我使用了 First(),但它可能会导致一些错误,因为它会迭代。我知道我可以用枚举来做,但我该怎么做呢?

你可以尝试用FirstOrDefault.it代表第一个元素

int[] numbers = { };
int first = numbers.FirstOrDefault();
Console.WriteLine(first);

IEnumerable<T> 顾名思义,一个可枚举的东西。它提供的唯一方法是IEnumerator<T> GetEnumerator()。每个扩展方法都会在某种程度上枚举 IEnumerable<T>

如果惰性 evaluation/multiple 枚举有问题(我已经使用数据库的结果集,在处理连接后对其进行评估,请参阅 here),请考虑枚举一次,例如通过使用 IEnumerable<T>.ToList().

IEnumerable<T> 转换为 List<T>

备注:如果枚举可枚举导致错误,说明你的设计有问题。考虑使用其他接口。