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

一般的なリストをC#のデータテーブルに効率的に変換するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-30 21:56:11
オリジナル
928 人が閲覧しました

How to Efficiently Convert a Generic List to a DataTable in C#?

c#medium high -efficiencyジェネリックリストをデータテーブルに変換する

ソフトウェア開発では、データは構造化された形式で必要なことがよくあります。 Datatableは、データフォームを提供する一般的なデータ構造です。ただし、処理する必要があるデータが汎用リストまたは列挙オブジェクトに保存される状況に遭遇する場合があります。この場合、リストまたはアクセス可能なオブジェクトをデータテーブルに変換するための方法が必要です。

fastmemberを使用して効率的な変換を行う

NugetのFastMemberライブラリを使用して、効率的で便利なソリューションを取得できます。 FastMemberを使用して、次のコードを使用して変換を実行できます。

カスタム変換リアリゼーション

<code class="language-csharp">IEnumerable<sometype> data = ...;
DataTable table = new DataTable();
using (var reader = ObjectReader.Create(data))
{
    table.Load(reader);
}</code>
ログイン後にコピー
カスタム変換方法を希望する場合は、リフレクションまたは.NET 2.0でHyperDescriptor関数を使用して、リストからデータテーブルを作成できます。これは実装の例です

パフォーマンス予防策さまざまな変換方法を評価する場合、パフォーマンス効果を考慮する必要があります。 FastMemberソリューションは、メタプログラミング機能により、最高の速度を提供します。カスタムの実装は遅いですが、小さなデータセットの効果的なオプションです。

結論

<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>
ログイン後にコピー

汎用リストまたは列挙オブジェクトをデータテーブルに変換することは、C#プログラミングの一般的なタスクです。 FastMemberライブラリを使用するか、カスタム変換を実現することにより、開発者はこの変換を効率的に実装できます。

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート