日期:2014-05-17  浏览次数:20761 次

两个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);