LINQ:比较两个数据表中的特定值

时间:2019-05-30 06:58:42

标签: c# linq

我有两个数据表。

数据表1的数据具有列FirstName,LastName,DOB,Gender 数据表2的数据具有CustomerID,FirstName,LastName,DOB,Gender列

我想比较数据表1和2中的名字,姓氏,DOB和性别,如果匹配,则将数据表2中的该行加载到新的数据表中。

下面是我正在使用的,可以与名字进行比较,但是我想添加姓氏,DOB和性别。请您告诉我我该怎么做?

我要这样做,以便如果名字,姓氏,出生日期和性别匹配,然后在数据表2中返回该匹配行。表之间的列长是不同的。

DataTable dtMerged = (from a in dataTable.AsEnumerable()
                                  join b in dt.AsEnumerable()
                                  on a["Forename"].ToString() equals b["FirstName"].ToString()
                                  into g
                                  where g.Count() > 0
                                  select a).CopyToDataTable();

            dtMerged.AsDataView();

1 个答案:

答案 0 :(得分:1)

尝试一下

DataTable dtMerged = dataTable.AsEnumerable()
    .Where(ra => dt.AsEnumerable()
    .Any(rb => rb.Field<string>("firstname") == ra.Field<string>("firstname")
      && rb.Field<string>("lastname") == ra.Field<string>("lastname")
      && rb.Field<DateTime>("dob") == ra.Field<DateTime>("dob")
      && rb.Field<string>("gender") == ra.Field<string>("gender")))
              .CopyToDataTable();