通过linq查找添加/删除/更改
本文关键字:删除 更改 添加 linq 查找 通过 | 更新日期: 2023-09-27 18:14:34
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
我想找到比较这两个数据表的行,并想找出新添加的行/删除的行存在于以前,但不存在于新的,也找出哪些行被改变。我尝试,但这里"xyz"被更改并添加了新行。
谁能帮我用Linq解决这个问题?
使用.Except()
。这将返回两个集合之间的集合差。例子:
https://msdn.microsoft.com/en-us/library/bb386962 (v = vs.110) . aspx
但是如果你需要一个更具体的例子,请告诉我。