我有一个数据表,如果它还没有主键,我必须分配一个主键。我试过了:
if (ds.Tables[0].PrimaryKey == null)
{
ds.Tables[0].PrimaryKey = new DataColumn[] { dt.Columns["Naam"] };
}
但是PrimaryKey(在这种情况下)不是null。当我检查它包含:{System.Data.DataColumn [0]}我如何检查它?
答案 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"] };