DataTable dtprev = new DataTable();
dtprev.Columns.Add("pref");
dtprev.Columns.Add("field1");
dtprev.Columns.Add("field2");
dtprev.Columns.Add("field3");
DataTable dtnew = dtprev.Clone();
dtprev.Rows.Add("h20", "50", "100", "150");
dtprev.Rows.Add("h20", "25", "501", "50");
dtprev.Rows.Add("h20", "50", "50", "50");
dtprev.Rows.Add("xyz", "1", "1", "35");
dtprev.Rows.Add("abc", "1", "1", "1");
dtprev.Rows.Add("abc", "2", "3", "4");
dtprev.Rows.Add("aaa", "2", "2", "2");
dtprev.Rows.Add("bbb", "1", "1", "1");
dtprev.Rows.Add("bbb", "1", "2", "1");
dtnew.Rows.Add("h20", "50", "100", "150");
dtnew.Rows.Add("h20", "25", "501", "50");
dtnew.Rows.Add("h20", "50", "503", "50");
dtnew.Rows.Add("xyz", "1", "1", "36");
dtnew.Rows.Add("xyz", "2", "3", "44");
dtnew.Rows.Add("abc", "1", "1", "1");
dtnew.Rows.Add("bbb", "2", "3", "4");
dtnew.Rows.Add("ccc", "2", "2", "2");
预期输出
"h20", "50", "100", "150" -- Matched
"h20", "25", "501", "50" -- Matched
"h20", "50", "503", "50" -- Changed
"xyz", "1", "1", "36" -- Changed
"xyz", "2", "3", "44" -- Addition
"abc", "1", "1", "1" -- Matched
"bbb", "2", "3", "4" -- Changed
"ccc", "2", "2", "2" -- Addition
"abc", "2", "3", "4" -- Deletion
"aaa", "2", "2", "2" -- Deletion
"bbb", "1", "2", "1" -- Deletion
我想找到比较这两个数据表的行,并希望找出新增加的行/已删除的行,这些行存在于prev但不存在于新的行中,并且还找出哪些行已更改。我在这里尝试" xyz"已更改并添加新行。
任何人都可以通过Linq帮我解决。
答案 0 :(得分:0)
使用.Except()
。这将返回两个集合之间的集合差异。示例:
https://msdn.microsoft.com/en-us/library/bb386962(v=vs.110).aspx
但是,如果您需要一个更具体针对您案例的示例,请告诉我。