Maison > développement back-end > C++ > Comment convertir efficacement un IEnumerable en DataTable en C# ?

Comment convertir efficacement un IEnumerable en DataTable en C# ?

Mary-Kate Olsen
Libérer: 2025-01-20 00:24:14
original
534 Les gens l'ont consulté

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

Convertir efficacement IEnumerable en DataTable en C#

Cet article explique comment convertir efficacement les collections IEnumerable en DataTables. Même si la réflexion constitue une méthode, elle est inefficace.

Le code suivant fournit une solution plus optimisée :

<code class="language-csharp">public static DataTable ToDataTable<T>(this IEnumerable<T> items)
{
    // 创建DataTable并收集属性
    DataTable table = new DataTable(typeof(T).Name);
    PropertyInfo[] props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);

    // 从属性添加列
    foreach (var prop in props)
    {
        Type propType = prop.PropertyType;

        // 处理可空类型
        if (propType.IsGenericType && propType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
            propType = new NullableConverter(propType).UnderlyingType;

        table.Columns.Add(prop.Name, propType);
    }

    // 从属性值添加数据行
    foreach (var item in items)
    {
        object[] values = new object[props.Length];
        for (int i = 0; i < props.Length; i++)
        {
            values[i] = props[i].GetValue(item, null);
        }
        table.Rows.Add(values);
    }

    return table;
}</code>
Copier après la connexion

Cette méthode d'extension gère efficacement les conversions, y compris la gestion des valeurs nullables. La prise en compte des types nullables garantit l’intégrité des données et des résultats fiables.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal