高效处理数据:将DataReader转换为List
在.NET环境中处理数据时,您可能需要将DataReader(一种只向前读取的数据流)转换为更易于管理的格式,例如List
解决方案:扩展方法
一种转换方法是使用扩展方法。示例如下:
<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
使用方法示例
要将数据转换为List
<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
以上是如何在.NET 中高效地将 DataReader 转换为列表?的详细内容。更多信息请关注PHP中文网其他相关文章!