2011-05-06 63 views
0

我有一个数据表,我必须分配一个主键,如果它还没有。我尝试过:如何检查是否datatable.PrimaryKey设置

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

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

回答

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"] }; 
    } 
-1
if (ds.Tables[0].PrimaryKey.Length == 0) 
    ds.Tables[0].PrimaryKey = new DataColumn[] { dt.Columns["Naam"] }; 
+1

你的回答应该包含你的代码的解释和描述它是如何解决问题的。 – AbcAeffchen 2014-11-13 16:10:03

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属性。

+0

您好,请为您的答案添加一些格式,以便更易读。 – Chaithanya 2017-06-09 18:24:16