如何使用列名字典来设置DataTable结构?

时间:2018-08-01 14:12:09

标签: c# dictionary datatable

是否有一种更有效的方法(最好是单行的,但不是必需的)来设置数据表的列结构,而不是像我下面所述的foreach方法?

// Identifiers used are:
var dataTable = new DataTable();
var columns = new System.Collections.Generic.Dictionary<string, System.Type>()
{
    { "Column 1", typeof(int) },
    { "Column 2", typeof(string) },
    { "Column 3", typeof(string) }
};

foreach (System.Collections.Generic.KeyValue<string, System.Type> column in columns)
{
    dataTable.Columns.Add(column.Key, column.Value);
}

2 个答案:

答案 0 :(得分:3)

您可以使用LINQ。

columns.ToList().ForEach(c => dataTable.Columns.Add(c.Key, c.Value))

基本上是同一件事。

答案 1 :(得分:0)

使用LINQ的另一种可能性,尽管除了单行之外可能没有更多的“效率”:

dataTable.Columns.AddRange(columns.Keys.Select(x => new DataColumn(x, columns[x])).ToArray());

这实际上将字典转换为DataColumn对象的数组,然后使用.AddRange()的{​​{1}}方法将它们添加到DataTable而不是DataTable.Columns