yield return
をループで使用する関数からIEnumerable<object[]>
要素を返します。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 returns'の後にDB接続を閉じるので、関数を2回呼び出すと、前の接続が閉じていないという例外が発生します。どうしてforeachでうまくいくのでしょうか?何とか何かを処分すべきですか? –
最初の要素を取得するために使ったことは何ですか? – manojlds
クールマン、 'CloseConnection'ビヘイビアを' ExecuteReader'関数に渡して修正しました。すべてがうまくいっています。ありがとう。 –