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