ホームページ >バックエンド開発 >C++ >genericリストをC#のデータ容器に効率的に変換するにはどうすればよいですか?

genericリストをC#のデータ容器に効率的に変換するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-30 21:41:12534ブラウズ

How to Efficiently Convert Generic Lists to DataTables in C#?

c#

の汎用リストをDatatablesに効率的に変換します

多くのC#開発者は、一般的なリストをDatatablesに変換するという課題に遭遇します。反射は解決策を提供しますが、より効率的な方法が存在します。 この記事では、最適なアプローチについて説明します

速度を速度

レバレッジします

優れたパフォーマンスの場合、FastMemberライブラリ(NUGET経由で入手可能)を強くお勧めします:

<code class="language-csharp">IEnumerable<sometype> data = ...;
DataTable table = new DataTable();
using(var reader = ObjectReader.Create(data)) {
    table.Load(reader);
}</code>
pre-.net 3.5代替:反射とHyperdescriptor

.NET 3.5の前に、開発者はリフレクションまたはHyperDescriptor(.NET 2.0で入手可能)に依存していました:

パフォーマンスの最適化:HyperDescriptor
<code class="language-csharp">public static DataTable ToDataTable<T>(this IList<T> data)
{
    PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));
    DataTable table = new DataTable();
    for (int i = 0; i < props.Count; i++)
    {
        PropertyDescriptor prop = props[i];
        table.Columns.Add(prop.Name, prop.PropertyType);
    }
    foreach (T item in data)
    {
        DataRow row = table.NewRow();
        for (int i = 0; i < props.Count; i++)
        {
            row[i] = props[i].GetValue(item);
        }
        table.Rows.Add(row);
    }
    return table;
}</code>
パフォーマンスを最大化するために、オブジェクトタイプのHyperdescriptorを有効にすることが重要です。 ベンチマークテストは、大幅な速度の改善を明らかにしています:

標準メソッド:27179 ms

    HyperDescriptor Enabled:6997 MS
  • これらの手法を利用することにより、開発者は一般的なリストをC#アプリケーションでDataTablesに変換する効率を大幅に向上させることができます。

以上がgenericリストをC#のデータ容器に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。