C# 使用单个表达式在datatable中创建列

C# 使用单个表达式在datatable中创建列,c#,datatable,C#,Datatable,我想用列定义datatable,其中列定义是datatable定义语句的一部分 乙二醇 但我更愿意做一些类似的事情 //invalid syntax DataTable dt = new DataTable(Data.Columns[] { {"num",typeof(int)}, {"num2",typeof(int)} }; 这可能吗? 如果是,正确的语法是什么。不能使用集合初始值设定项初始化DataTable。您所能使用的就是AddRange方法DataColumnCol

我想用列定义datatable,其中列定义是datatable定义语句的一部分

乙二醇

但我更愿意做一些类似的事情

//invalid syntax
DataTable dt = new DataTable(Data.Columns[] {
    {"num",typeof(int)},
    {"num2",typeof(int)}
};
这可能吗?
如果是,正确的语法是什么。

不能使用集合初始值设定项初始化DataTable。您所能使用的就是
AddRange
方法
DataColumnCollection
,但我认为它并不比您最初的方法好多少

DataTable dt = new DataTable();
dt.Columns.AddRange(new[] {
    new DataColumn("num", typeof(int)),
    new DataColumn("num2", typeof(int))
});
您可以创建扩展方法,该方法将以流畅的方式添加列:

public static DataTable AddColumn<T>(this DataTable dt, string name)
{
     dt.Columns.Add(name, typeof(T));
     return dt;
}
公共静态DataTable AddColumn(此DataTable dt,字符串名称)
{
添加(名称,类型(T));
返回dt;
}
用法:

var dt = new DataTable()
          .AddColumn<int>("num")
          .AddColumn<int>("num2");
var dt=new DataTable()
.AddColumn(“num”)
.AddColumn(“num2”);

你必须自己写。使用一个返回新数据表的静态方法,这就足够简单了,或者您可以使用装饰器模式。
var dt = new DataTable()
          .AddColumn<int>("num")
          .AddColumn<int>("num2");