1

我想定义一个派生自 System.Data.DataTable 的类。
这个类有一个PopulateColumns方法,你可以猜到填充数据表。我希望此方法能够使用任意数量的自定义数据类型动态填充数据表列。(请参阅下面的代码以进行说明)我尝试使用Dictionary<strin,Type>,而不是一一传递所有参数:

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);  

这工作正常。但它不能接受相同的两列(因为列名是字典中的键)。
我知道我不需要传递具有相同名称的两列。但我只是好奇是否有更好的方法来做到这一点。

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 回答