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?数据的“匹配”(如果我理解正确)应该发生在数据库级别,所以在数据到达应用程序之前。当然,这取决于你的具体情况。