两个Dictionary<int,string>如何知道B集合对于A集合来讲变化了哪些?
如果是两个List<T>我就知道,A集合和B集合,只要做A∪B-A,就能够得出B集合对于A集合来说哪些元素变化了。
A={[1,a],[4,c],[2,d]}
B={[2,c],[4,c],[1,f]}
A∪B={[1,a],[4,c],[2,d],[2,c],[1,f]}
A∪B-A={[2,c],[1,f]}
但是两个Dictionary<int,string>类型的A集合和B集合,由于int是Key,是不允许重复的吧?
如果要探究B集合对于A集合,哪些元素变化了,该如何操作呢?
------解决方案--------------------逻辑还是A∪B-A
只是具体操作上加点判断就可以了。
------解决方案--------------------
A={[1,a],[4,c],[2,d]}
B={[2,c],[4,c],[1,f]}
foreach(var aa in B)
{
if(!A.contains(aa))
writeline(aa.tostring());
}
------解决方案--------------------对于两个比较集合,你只需要从集合B中排除A中所有的元素即为发生变化的,可能是添加,修改,或者删除
如下
C# code
Dictionary<int, string> _A = new Dictionary<int, string>() {
{1,"1"},
{2,"2"},
{3,"3"}
};
Dictionary<int, string> _B = new Dictionary<int, string>() {
{1,"6"},
{2,"2"},
{3,"3"}
};
var s=_B.Except(_A);