データを効率的に処理する: DataReader をリストに変換する
.NET 環境でデータを処理する場合、DataReader (前方読み取りのみを行うデータ ストリーム) を List
解決策: 拡張メソッド
変換する 1 つの方法は、拡張メソッドを使用することです。例は次のとおりです:
public static IEnumerable<T> Select<T>(this IDataReader reader, Func<IDataReader, T> projection) { while (reader.Read()) { yield return projection(reader); } }
この拡張メソッドを使用すると、射影関数を使用して DataReader からデータを選択し、それを IEnumerable
使用例
データをリストに変換するには
using (IDataReader reader = ...) { List<Customer> customers = reader.Select(r => new Customer { CustomerId = r["id"] is DBNull ? null : r["id"].ToString(), CustomerName = r["name"] is DBNull ? null : r["name"].ToString() }).ToList(); }
この例では、DataReader の行を Customer オブジェクトのリストに変換します。
代替: エンティティ タイプに特化したメソッド
また、Customer エンティティに専用の静的メソッドを作成することもできます。
public static Customer FromDataReader(IDataReader reader) { ... }
このメソッドは、DataReader 内のデータに基づいて Customer オブジェクトを作成します。
この方法を使用すると、変換プロセスを簡素化できます:
using (IDataReader reader = ...) { List<Customer> customers = reader.Select<Customer>(Customer.FromDataReader) .ToList(); }
これらの手法により、DataReader 内のデータを List
以上がDataReader を .NET のリストに効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。