独特的DataColumn比较两个DataTables

时间:2014-09-01 10:02:58

标签: c# linq lambda

我有两个具有相同列设置的数据表。表"原始"用作与表"编辑"进行比较的副本,其中包含大部分相同的数据,但某些行可能已由用户编辑。 表"编辑"可以由Excel中的用户自由编辑,因此是双表系统。

表格可能有不同的主键。唯一列值。

编辑完成后,我需要比较两个表。 如果唯一列值已更改,我需要将该行视为新行,即稍后使用INSERT而不是UPDATE查询到sql server。 如果更改了任何其他但唯一的列值,则会导致UPDATE查询。

我已经有了lambda表达式,假设唯一列是表中的第一列。

var oldRows original.AsEnumerable()
    .Where(r=> !edited.AsEnumerable()
        .Any(r2 => r[0].ToString().Trim().ToLower() == r2[0].ToString().Trim().ToLower()));

var newRows edited.AsEnumerable()
    .Where(r=> !original.AsEnumerable() 
        .Any(r2 => r[0].ToString().Trim().ToLower() == r2[0].ToString().Trim().ToLower()));

然而,现在,要求已经改变为不同列的不同计数和位置。 我可以使用linq获得所有唯一的列,但无法真正解决如何加入这两个操作。

var uniqueColumns from DataColumn c in original.Columns where c.Unique select c; 

有没有人建议如何将其用于表达式?

0 个答案:

没有答案