首页 >后端开发 >C++ >如何在.NET 中高效地将 DataReader 转换为列表?

如何在.NET 中高效地将 DataReader 转换为列表?

Susan Sarandon
Susan Sarandon原创
2025-01-16 22:17:09981浏览

How Can I Efficiently Convert a DataReader into a List in .NET?

高效处理数据:将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,从而利用LINQ的强大功能进行进一步的数据操作和处理。

以上是如何在.NET 中高效地将 DataReader 转换为列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn