3

在我的项目中有两个数据表dtNamesdtDetails.

我不知道SQL。在这里,我连接到 XML 和文本文件。

名称

EmpName    EmpRole

   a         2
   b         3
   c         4

dt详情

 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

我想根据EmpNameand关联这两个数据表EmpRole(这里比较dtNames)并将结果存储在 DataSet dsMain(表来自dtDetails)中,然后根据比较像matchedDataTable和划分两个数据表unmatchedDataTable

我知道这可以使用DataRelationRowFilter来完成,但我不知道如何做到这一点,因为有两列要与我不知道的其他数据表两列进行比较。(我是 .net 的初学者)

我尝试了以下代码:(不工作

            DataSet dsMain = new DataSet();
            DataRelation newRelation = new DataRelation("processData"
                , dtNames.Columns["EmpName"], dtDetails.Columns["EmpName"]);
            dsMain.Relations.Add(newRelation);

如您所见,在上面的代码中,我只是将一列与另一列进行比较。如何与两个比较。我很亲近

请协助。

4

2 回答 2

5

使用接受列数组的构造函数:

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);
于 2012-10-18T13:39:35.667 回答
4

你检查了可能的构造函数DataRelation吗?

只需传递一个数组DataColumn,您就可以组合多个列。像这样:

DataRelation newRelation = new DataRelation("test", new DataColumn[] { dt1.Columns[0], dt1.Columns[1] },
                                                    new DataColumn[] { dt2.Columns[0], dt2.Columns[1] });
于 2012-10-18T13:37:09.813 回答