如何使用数据集在 C# 或 dotnet 中查找主键列名称?

Posted

技术标签:

【中文标题】如何使用数据集在 C# 或 dotnet 中查找主键列名称?【英文标题】:How to find primary key column name in C# or dotnet using dataset? 【发布时间】:2021-08-11 11:31:13 【问题描述】:

我想从获取的数据集中查找主键列名,但是当我在调试模式下运行应用程序时,没有检索到主键。虽然在 asp.net 中有预定义的属性可以使用 datacolumn 获取主键。我写的代码附在下面。

        var dataSetUpdate = new DataSet();

        //Convert Xml string into Dataset/Datatable
        using (var stringReader = new StringReader(tableXml))
        
            dataSetUpdate.ReadXml(stringReader, XmlReadMode.ReadSchema);
        

        DataColumn[] PrimaryKeys;
        PrimaryKeys = dataSetUpdate.Tables[0].PrimaryKey;
        string PrimaryKeyColumnName;

        //PrimaryKeys.Length value is coming zero when I checked in debug mode

        for(int j=0;j<PrimaryKeys.Length;j++)   
        
            PrimaryKeyColumnName = PrimaryKeys[j].ColumnName;
        
        

我获取主键的方式是否正确?

【问题讨论】:

xml 文件是一个文本文件。发布文本以获得更多帮助。 @jdweng xml 字符串太大 你能贴一张截图还是只贴一张表格? 我不确定导入到数据表/数据集的 xml 文件是否会导致 PK 设置? 【参考方案1】:

看起来您正在将单个属性分配给数组对象PrimaryKeys = dataSetUpdate.Tables[0].PrimaryKey;

尝试将该行更改为primaryKeys = dataSetUpdate[0],这也是假设您的目标表确实位于索引0,否则您只需检查dataSetUpdate.Tables中的目标表是什么索引

PrimaryKeys = dataSetUpdate.Tables[0]; //primary key property removed here, first debug the dataSet.Tables object and see if there's data at all
    string PrimaryKeyColumnName;// consider camel casing primaryKeyColumn name


    for(int j=0;j<PrimaryKeys.Length;j++)   
    
        PrimaryKeyColumnName = PrimaryKeys[j].PrimaryKey; //primary key moved here or you can stick with columnName
    

【讨论】:

以上是关于如何使用数据集在 C# 或 dotnet 中查找主键列名称?的主要内容,如果未能解决你的问题,请参考以下文章

C# dotnet 使用 OpenXml 关闭时不自动保存文档方法

算法或 SQL:查找一组列的条件,确保结果集在特定列中的值始终 > 0

模板中的数据

如何查找内容表 SQL 中的差异

如何使用 dotnet/iot Mfrc522 库

如何使用机器学习从给定的地理数据集在 python 中进行预测?