获取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();

获取IEnumerable项的第一个元素

总之:

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);
    }