我正在返回一個IEnumerable<object[]>
元素,該函數在循環中使用yield return
。獲取IEnumerable項的第一個元素
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'後關閉了數據庫連接,所以如果我調用這個函數兩次,它會引發一個異常,說上一個連接沒有關閉。如何用'foreach'正常工作?我應該以某種方式處理某些事情嗎? – 2011-04-29 05:57:52
你能說出你用來獲得第一個元素嗎? – manojlds 2011-04-29 06:02:14
酷男,我通過將'CloseConnection'行爲傳遞給'ExecuteReader'函數來解決它。現在一切都很好。感謝堆。 – 2011-04-29 06:04:16