如何检查 datatable.PrimaryKey 是否设置

发布于 2024-11-06 03:21:39 字数 253 浏览 5 评论 0原文

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

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

但是 PrimaryKey(在本例中)不为空。当我检查它包含: {System.Data.DataColumn[0]} 我如何检查?

i have a datatable which i have to assign a primary key if it doesn't already have one. i tried :

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

But the PrimaryKey (in this case) not null. When i checked it contained : {System.Data.DataColumn[0]} How can i check on that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

撩起发的微风 2024-11-13 03:21:39

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

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

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

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

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

Javier's answer is correct, but lacks explanation. So here it is, DataTable.PrimaryKey property is collection of DataColumns.
If the DataTable PrimaryKey property is not set than length of the collection will be 0. If DataTable has one or more fields defined as primary key than length of the PrimaryKey property will reflect this.
So, checking like this:

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

will tell us if no columns are added to represent the primary key, and the part

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

would actually add DataColumn(s) to collection of columns held by PrimaryKey property.

预谋 2024-11-13 03:21:39

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

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

Looks like it is not that hard after all i already tried this but apparently did something wrong because when i just tried again it did work :

    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"] };
    }
沩ん囻菔务 2024-11-13 03:21:39
if (ds.Tables[0].PrimaryKey.Length == 0)
    ds.Tables[0].PrimaryKey = new DataColumn[] { dt.Columns["Naam"] };
if (ds.Tables[0].PrimaryKey.Length == 0)
    ds.Tables[0].PrimaryKey = new DataColumn[] { dt.Columns["Naam"] };
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文