1

System.Data.DataTable から派生したクラスを定義したいと思います。
このクラスにはPopulateColumns、ご想像のとおり、DataTable に入力するメソッドがあります。このメソッドで、データ テーブル列に任意の数のカスタム データ型を動的に入力できるようにしたいと考えています。(明確にするために、以下のコードを参照してください)Dictionary<strin,Type>すべてのパラメーターを1つずつ渡す代わりに、を使用してみました:

public void Populate(Dictionary<string, Type> dic)
   {
       foreach (var item in dic)
           this.Columns.Add(item.Key, item.Value);
   }  

そしてそれを呼び出します:

var testDt = new TestDataTable();
Dictionary<string, Type> dicCols = new Dictionary<string, Type>();
dicCols.Add("Index", System.Type.GetType("System.Int32"));
dicCols.Add("Title", System.Type.GetType("System.String"));
testDt.Populate(dicCols);  

これはうまくいきます。ただし、同じ列を 2 つ受け入れることはできません (列名はディクショナリのキーであるため)。
同じ名前の 2 つの列を渡す必要がないことはわかっています。しかし、それを行うためのより良い方法があるかどうかに興味があります。

4

1 に答える 1

5

思ったより簡単です:

    testDt.Columns.AddRange(new[] 
    {
        new DataColumn("Index", typeof(int)),
        new DataColumn("Title", typeof(string)),
    });

または、事前にリストを作成できます。

    var columns = new[] 
    {
        new DataColumn("Index", typeof(int)),
        new DataColumn("Title", typeof(string)),
    };

    testDt.Columns.AddRange(columns);

(配列、コレクションなどにはAddRange()メンバーがあります。)

于 2010-11-01T21:06:38.850 に答える