我有两个具有相同列设置的数据表。表"原始"用作与表"编辑"进行比较的副本,其中包含大部分相同的数据,但某些行可能已由用户编辑。 表"编辑"可以由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;
有没有人建议如何将其用于表达式?