C# 如何定义数据集与#x27;在多个列上创建数据表?
在我的项目中,有两个数据表C# 如何定义数据集与#x27;在多个列上创建数据表?,c#,datatable,dataset,C#,Datatable,Dataset,在我的项目中,有两个数据表dtNames和dtDetails 我不懂SQL。这里我连接到XML和文本文件 dtNames EmpName EmpRole a 2 b 3 c 4 Empid EmpName EmpCity EmpRole 101 a abc 3 //EmpRole not equal to above table EmpRole 10
dtNames
和dtDetails
我不懂SQL。这里我连接到XML和文本文件
dtNames
EmpName EmpRole
a 2
b 3
c 4
Empid EmpName EmpCity EmpRole
101 a abc 3 //EmpRole not equal to above table EmpRole
102 b abc 3
103 c xyz 4
104 d pqr 5
105 e rst 6
dtDetails
EmpName EmpRole
a 2
b 3
c 4
Empid EmpName EmpCity EmpRole
101 a abc 3 //EmpRole not equal to above table EmpRole
102 b abc 3
103 c xyz 4
104 d pqr 5
105 e rst 6
我想基于EmpName
和EmpRole
(这里比较dtNames
)将这两个数据表关联起来,并将结果存储在数据集dsMain
(表自dtDetails
)然后根据比较将这两个数据表划分为matchedDataTable
和unmatchedDataTable
我知道这可以用or完成,但我想不出怎么做,因为有两列要与其他datatable进行比较,这两列我不知道。(我是.net的初学者)
我尝试了以下代码:(不工作)
正如您在上面的代码中看到的,我只是将一列与另一列进行比较。二者相比如何。我很接近
请协助。您是否检查了
DataRelation
的可能构造函数
只需传递一个DataColumn
数组,就可以组合多个列。
像这样:
使用接受列数组的构造函数:
DataSet dsMain = new DataSet();
DataRelation newRelation = new DataRelation("processData",
new DataColumn[] { dtNames.Columns["EmpName"], dtNames.Columns["EmpRole"] },
new DataColumn[] {dtDetails.Columns["EmpName"], dtDetails.Columns["EmpRole"]}
);
dsMain.Relations.Add(newRelation);
看看这个-我想这是林克?如果是,那么我不想要它。我知道如何使用linq,但我的项目是严格非linq的。不能使用数据集行筛选器或数据关系来完成此操作。请注意:您可能需要重新评估您的数据库设计(或检索查询),因为目前数据表尚未规范化(即,您正在两个表中重复EmpRole数据)。谢谢,如何将其划分为两个表,如
matchedtable
和unmatchedtable
?该关系实际上会阻止添加不匹配的行。要区分“匹配”和“不匹配”,您必须使用普通的旧foreach循环。谢谢,如何将其划分为两个表,如matchedtable和unmatchedtable?数据的“匹配”(如果我理解正确)应该发生在数据库级别,所以在数据到达应用程序之前。当然,这取决于你的具体情况。