有两个list实体的数据.比如.List<实体A> AList = DA.GETLIST();
List<实体B> BList = DA.GETLIST();我该怎么去判断这两个LIST集合的数据是否一样?下面这个方法不行
            if (ListA.Contains(ListB))
            {
                MessageBox.Show("相等");
            }
            else
            {
                MessageBox.Show("不想等");
            }
list

解决方案 »

  1.   

    if(ListA.Count()==ListB.Count()&&LictA.Count(t=>!ListB.Contains(t))==0)
    相等
      

  2.   

    循环遍历ListA中的元素是否都在ListB中 在遍历ListB中的元素是否都在ListA种 不知道这个可行不
      

  3.   


    对于你这个问题,我没有写过类似的代码,但是实现的话,个人认为最傻最直接办法就是遍历两个集合,如果遇到不相等的就break;返回false,当然还有别的方法,至于效率方面看经验而谈了。
      

  4.   

    最简单易懂的办法:if (AList.Except(List).Count() == 0 && BList.Except(AList).Count() == 0)
    {
        相等
    }
      

  5.   

    不好意思少写了个Bif (AList.Except(BList).Count() == 0 && BList.Except(AList).Count() == 0)
    {
        相等
    }
      

  6.   

    a.orderby(x => x).sequenceequals(b.orderby(x => x))
      

  7.   

    上面用lambda表达式的需要添加 using System.Linq;
      

  8.   

    其实我最喜欢女纸说TMD的了。
      

  9.   

    要我说,给你这样的代码return ListA.Count==ListB.Count;就鸥了。
      

  10.   


    NO 其实 对他来说 
    return ListA == ListB;
    就够了
      

  11.   

    if (ListA.Contains(ListB)&&ListA.Count==ListB.Count)
      

  12.   

    写个比较器
    http://blog.csdn.net/chinajiyong/article/details/8161944
      

  13.   

    看看泛型的Find或者Exists之类的,效果会更好;
    http://www.cnblogs.com/yuanyuan/archive/2010/06/19/1760987.html
      

  14.   

    说个很容易理解的方法。
    1、先判断ListA.count是否等于ListB.count;
    2、确定第1步骤相等后在判断一个集合中的所有元素是否在另外一个集合中存在。
       代码如下:
       public bool IsEqual<T>(IList<T> ListA,IList<T> ListB){
       if(ListA.Count!=ListB.Count)
          return false;
        foreach(T item in ListA){
         if(!ListB.Contains(item))
            return false;
       }
         return true;
    }