具有主键的DataTable对象初始化程序

时间:2015-01-16 12:26:52

标签: c# datatable

我在初始化使用对象初始化程序指定DataTableColumns的{​​{1}}时遇到了困难:

PrimaryKey

有没有办法让它发挥作用?

2 个答案:

答案 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] };
}