如果是两个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集合,哪些元素变化了,该如何操作呢?

解决方案 »

  1.   

    key也可能重复。
    你可以试试DataTable
    可以直接判断交集差集这些。
      

  2.   

    逻辑还是A∪B-A只是具体操作上加点判断就可以了。
      

  3.   

    对于Dictionary来说,没有Intersect()或Union()方法。我知道DataTable是有这两个方法的。
      

  4.   

    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());
    }
      

  5.   

    对于两个比较集合,你只需要从集合B中排除A中所有的元素即为发生变化的,可能是添加,修改,或者删除如下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);
      

  6.   

    话是没错,只需要做差集就行了,但是Dictionary没有Except()方法,所以我暂时用4楼的方法。
      

  7.   

    至少上面写的是可以的,包含Except方法 .Net FrameWork 4.0