在通用方法C#中指定数据表的列

时间:2013-01-16 07:43:07

标签: c#

我已经有了指定dataTable列的代码,但我想要的是创建一个在她的参数中包含的通用方法:ColumnName和类型。 我怎么能这样做?

这是我的代码:

column = dt.Columns.Add();
column.ColumnName = "IPPName";
column.DataType = typeof(String);

column = dt.Columns.Add();
column.ColumnName = "tagName";
column.DataType = typeof(String);

column = dt.Columns.Add();
column.ColumnName = "time";
column.DataType = typeof(String);

column = dt.Columns.Add();
column.ColumnName = "value";
column.DataType = typeof(Double);

column = dt.Columns.Add();
column.ColumnName = "qtity";
column.DataType = typeof(Double);

2 个答案:

答案 0 :(得分:2)

我不知道我是否正确理解了问题。你想实现这样的东西吗?

      public DataTable  CreateDataTable(Dictionary<string,Type> columns)
      {
            DataTable dt = new DataTable();
            foreach( var key in columns)
            {
                var column = dt.Columns.Add();
                column.ColumnName = key.Key;
                column.DataType = key.Value;
            }
            return dt;

        }


        public void CreateNewDataTable()
        {
            var columns = new Dictionary<string, Type>()
                {
                    {"column", typeof (string)}
                };
            var dt = CreateDataTable(columns);
        }

答案 1 :(得分:0)

使用extensionmethods解决它的另一种方法。我相信它比@adt回答更容易理解并且更有用,因为它可以在已有的DataTable上调用。

如果您需要有关扩展方法的帮助,请查看this description或只询问:)

public static class DataTableExtentions {
  public static void AddColumn(this DataTable table, string columnName, Type columnType)
  {
    var col = table.Columns.Add();
    col.ColumnName = columnName;
    col.DataType = columnType;
  }
}

它将被称为:

column = dt.AddColumn("IPPName", typeof(String));

column = dt.AddColumn("tagName", typeof(String));

column = dt.AddColumn("time", typeof(String));

column = dt.AddColumn("value", typeof(Double));

column = dt.AddColumn("qtity", typeof(Double));