Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在通用方法C中指定datatable的列#_C# - Fatal编程技术网

C# 在通用方法C中指定datatable的列#

C# 在通用方法C中指定datatable的列#,c#,C#,我已经有了指定dataTable列的代码,但我想要的是创建一个通用方法,该方法的参数中包含:ColumnName和类型。 我该怎么做 这是我的代码: column = dt.Columns.Add(); column.ColumnName = "IPPName"; column.DataType = typeof(String); column = dt.Columns.Add(); column.ColumnName = "tagName"; column.DataType = typeof

我已经有了指定
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);

我不知道我是否正确理解了这个问题。您想实现这样的功能吗

      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);
        }
公共数据表CreateDataTable(字典列) { DataTable dt=新的DataTable(); foreach(列中的var键) { var column=dt.Columns.Add(); column.ColumnName=key.key; column.DataType=key.Value; } 返回dt; } public void CreateNewDataTable() { var columns=newdictionary() { {“列”,类型(字符串)} }; var dt=CreateDataTable(列); }
使用extensionmethods解决此问题的另一种方法。我相信它比@adt answer更容易理解,而且更有用,因为它可以在已经存在的
数据表上调用

如果您需要有关extensionmethods的帮助,请查看或直接询问:)

这将被称为:

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

我不知道她在干什么:)
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));