我从一个使用 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();
yield return
之后我关闭了 DB 连接,所以如果我两次调用该函数,它会引发异常,说之前的连接没有关闭。为什么使用foreach
没有问题?我应该如何处理释放资源? - David Weng