即使它是一个类型化数据集,您仍然可以使用DataSet的DataTables属性和DataTable的DataColumns属性.但是,要将Linq与这些一起使用,您必须调用.OfType<DataTable>()或.OfType<DataColumn>()在相应的属性上将其转换为IEnumerable <>,以便您可以对它们运行Linq查询.之后,您只需检查相应的属性即可找出什么是主键或外键.我不确定最后一部分是否存在这些值的属性,或者您是否必须检查数据关系以确定这一点.
编辑:DataTable上实际上有一个PrimaryKey属性,它将返回组成PrimaryKey的DataColumns数组.对于外键,我相信您必须深入了解DataRelations集合以确定哪些列是外键.