我在初始化使用对象初始化程序指定DataTable
和Columns
的{{1}}时遇到了困难:
PrimaryKey
有没有办法让它发挥作用?
答案 0 :(得分:2)
你应该这样写,
DataTable _products = new DataTable
{
Columns = { { "Product", typeof(string) }, { "Lot", typeof(string) }, { "Qty", typeof(int) } },
//PrimaryKey = Columns[0] //Columns doens't exist in the current context because, datatable is still initializing.
};
_products.PrimaryKey = new DataColumn[] {_products.Columns[0]}; //Columns exists here.
答案 1 :(得分:1)
不,如果要在其中使用也在其中初始化的对象,则不能使用object initializer语法。但这也没有多大意义。
而是使用构造函数,因为那是合适的地方:
private DataTable _products;
public void ClassName()
{
_products = new DataTable
{
Columns = { { "Product", typeof(string) }, { "Lot", typeof(string) }, { "Qty", typeof(int) } }
};
_products.PrimaryKey = new[] { _products.Columns[0] };
}