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

Comment puis-je convertir efficacement un IEnumerable en DataTable en C# ?

Susan Sarandon
Libérer: 2025-01-20 00:27:09
original
377 Les gens l'ont consulté

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

Convertir efficacement IEnumerable en DataTable en C#

La conversion de IEnumerable en DataTable permet aux développeurs de traiter les données dans un format tabulaire structuré. Cependant, les solutions existantes reposent souvent sur des approches inefficaces basées sur la réflexion. Cette question cherche à trouver une alternative plus efficace.

Tout d'abord, l'extrait de code dans la réponse fournie fournit une méthode d'extension utile :

<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>
Copier après la connexion

Cette méthode d'extension fournit un moyen pratique et efficace de convertir IEnumerable en DataTable. En gérant soigneusement les types nullables, il garantit l'intégrité des données et permet de récupérer les valeurs à l'aide de noms de colonnes fortement typés.

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