Как проверить, установлен ли datatable.PrimaryKey - PullRequest
0 голосов
/ 06 мая 2011

У меня есть таблица данных, которой я должен назначить первичный ключ, если у него его еще нет. я попробовал:

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

Но PrimaryKey (в данном случае) не равен нулю. Когда я проверил, он содержал: {System.Data.DataColumn [0]} Как я могу проверить это?

Ответы [ 3 ]

1 голос
/ 09 июня 2017

Ответ Хавьера верен, но ему не хватает объяснения.Итак, вот, свойство 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 (s) в коллекциюстолбцов, хранящихся в свойстве PrimaryKey.

0 голосов
/ 13 ноября 2014
if (ds.Tables[0].PrimaryKey.Length == 0)
    ds.Tables[0].PrimaryKey = new DataColumn[] { dt.Columns["Naam"] };
0 голосов
/ 06 мая 2011

Похоже, это не так сложно, в конце концов, я уже пробовал это, но, по-видимому, сделал что-то не так, потому что, когда я просто попробовал снова, это сработало:

    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"] };
    }
...