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
Susan Sarandonoriginal
2025-01-20 00:27:09379parcourir

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>

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!

Déclaration:
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