>백엔드 개발 >C++ >C#에서 IEnumerable을 DataTable로 효율적으로 변환하려면 어떻게 해야 합니까?

C#에서 IEnumerable을 DataTable로 효율적으로 변환하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-20 00:27:09338검색

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로 변환하는 편리하고 효율적인 방법을 제공합니다. Null 허용 유형을 신중하게 처리함으로써 데이터 무결성을 보장하고 강력한 유형의 열 이름을 사용하여 값을 검색할 수 있습니다.

위 내용은 C#에서 IEnumerable을 DataTable로 효율적으로 변환하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.