2010-11-01 103 views
0

我想定义一个派生自System.Data.DataTable的类。
这个类有一个PopulateColumns方法,你可以猜测填充DataTable。 我希望此方法能够动态填充任何数字自定义数据类型的数据表列。 (请参见下面的澄清我的代码) 我试着用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); 

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

回答

2

它更简单的比你想:

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

或者,你可以建立事前名单:(数组,集合等方面有AddRange()成员)

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

    testDt.Columns.AddRange(columns); 

+0

谢谢。好像我需要睡觉......不知道我怎么看不到这些! – Kamyar 2010-11-01 21:11:03

相关问题