如何检查是否设置了datatable.PrimaryKey

时间:2011-05-06 12:10:43

标签: datatable primary-key

我有一个数据表,如果它还没有主键,我必须分配一个主键。我试过了:

if (ds.Tables[0].PrimaryKey == null)
{
    ds.Tables[0].PrimaryKey = new DataColumn[] { dt.Columns["Naam"] };
}

但是PrimaryKey(在这种情况下)不是null。当我检查它包含:{System.Data.DataColumn [0]}我如何检查它?

3 个答案:

答案 0 :(得分:1)

哈维尔的回答是正确的,但缺乏解释。所以在这里,DataTable.PrimaryKey属性是DataColumns的集合。 如果未设置DataTable PrimaryKey属性,则集合的长度将为0.如果DataTable有一个或多个字段定义为主键,则PrimaryKey属性的长度将反映此情况。 所以,像这样检查:

    if (ds.Tables[0].PrimaryKey.Length == 0)

将告诉我们是否没有添加任何列来表示主键和部分

     ds.Tables[0].PrimaryKey = new DataColumn[] { dt.Columns["Naam"] }; 

实际上会将DataColumn添加到PrimaryKey属性所持有的列的集合中。

答案 1 :(得分:0)

看起来并不是那么难,毕竟我已经尝试过但显然做错了,因为当我再试一次它确实有效:

    DataColumn[] esl = new DataColumn[] { dt.Columns["Naam"] };
    if (ds.Tables[0].PrimaryKey == null || ds.Tables[0].PrimaryKey == esl)
    {
        ds.Tables[0].PrimaryKey = new DataColumn[] { dt.Columns["Naam"] };
    }

答案 2 :(得分:-1)

if (ds.Tables[0].PrimaryKey.Length == 0)
    ds.Tables[0].PrimaryKey = new DataColumn[] { dt.Columns["Naam"] };