首页 > 后端开发 > C++ > 如何在 C# 中高效地将 IEnumerable 转换为 DataTable?

如何在 C# 中高效地将 IEnumerable 转换为 DataTable?

Susan Sarandon
发布: 2025-01-20 00:27:09
原创
377 人浏览过

How Can I Efficiently Convert an IEnumerable to a DataTable in C#?

C#中高效将IEnumerable转换为DataTable

将IEnumerable转换为DataTable允许开发者以结构化的表格格式处理数据。然而,现有的解决方案通常依赖于低效的基于反射的方法。本问题旨在寻找更高效的替代方案。

首先,提供的答案中的代码片段提供了一个有用的扩展方法:

<code class="language-csharp">public static DataTable ToDataTable<T>(this IEnumerable<T> items)
{
    // 使用类型名称初始化DataTable
    var table = new DataTable(typeof(T).Name);

    // 获取类型的公共属性
    PropertyInfo[] properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);

    // 将属性作为列添加到DataTable
    foreach (var property in properties)
    {
        var propertyType = property.PropertyType;

        // 处理可空类型
        if (propertyType.IsGenericType && propertyType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
        {
            propertyType = Nullable.GetUnderlyingType(propertyType);
        }

        table.Columns.Add(property.Name, propertyType);
    }

    // 将每个T的属性值作为行添加到DataTable
    foreach (var item in items)
    {
        var values = new object[properties.Length];
        for (int i = 0; i < properties.Length; i++)
        {
            values[i] = properties[i].GetValue(item);
        }
        table.Rows.Add(values);
    }

    return table;
}</code>
登录后复制

这个扩展方法提供了一种方便且高效的方式,将IEnumerable转换为DataTable。通过仔细处理可空类型,它确保了数据完整性,并允许使用强类型列名检索值。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板