获取IEnumerable项的第一个元素
本文关键字:第一个 元素 IEnumerable 获取 | 更新日期: 2023-09-27 17:54:13
我从一个在循环中使用yield return
的函数返回一个IEnumerable<object[]>
元素。
public static IEnumerable<object[]> GetData()
{
...
connection.Open();
using (OleDbDataReader dr = command.ExecuteReader())
{
while (dr.Read())
{
object[] array = new object[dr.FieldCount];
dr.GetValues(array);
yield return array;
}
}
connection.Close();
}
在不使用循环的情况下检索第一个元素的最佳方法是什么?var result = Adapter.GetData();
总之:
enumerator=result.GetEnumerator();
enumerator.MoveNext();
enumerator.Current;
这就是foreach在循环中遍历所有元素的作用。
正确方式:
using (IEnumerator<object[]> enumerator = result.GetEnumerator()) {
if (enumerator.MoveNext()) e = enumerator.Current;
}
用LINQ:
var e = result.First();
或
var e = result.FirstOrDefault(default);
也:
var e = result.ElementAt(0);
如果你的。net 3.5或更高版本
Adapter.GetData().First()
你不能使用result.First()
吗?
enumerator=result.GetEnumerator();
enumerator.MoveNext();
enumerator.Current;
public static T FirstOrDefault<T>(this IEnumerable items) where T : class {
var list = items.OfType<T>();
if (list!= null) {
return list.FirstOrDefault();
}
return default(T);
}