none
关于List<T>的问题!求教 RRS feed

  • 问题

  • 如果我现在有两个List<T>对象,
    我如何对他们的值进行比较,判断是否相等呢??

    现在的想法是循环一个List<T>取出其中的一个数据项,然后将此数据项放入另外一个List<T>中去进行比较


    有没有别的方法的?请教!

    2009年10月27日 7:40

答案

全部回复

  • 可以用Contains方法
             还有3.5的linq的.SequenceEqual方法
    2009年10月27日 7:52
  • 你好!
         你的意思应该是这两个List实例的内容是否相等吧,只能自己写循环来比较!
    周雪峰
    2009年10月27日 8:07
    版主
  • 你好!
         你的意思应该是这两个List实例的内容是否相等吧,只能自己写循环来比较!
    周雪峰

    SequenceEqual方法就是比较实例是否相等
    2009年10月27日 8:47
  • 感谢mldark的热心回复啊!
    这个在.NET Framework2.0下并没有支持,由于楼主没有指明自己使用的版本,所以我没有建议使用这个方法
    周雪峰
    2009年10月27日 10:43
    版主
  • 我这里是.Net Framework 3.5

    2009年10月27日 16:30
  • 你好,如果你只是需要判断是否相等,只能循环集合类了,至于性能,你可以根据数据量的大小,使用不同的算法。
    2009年10月28日 1:47
    版主
  • 假设数据量比较大··楼上能提供一个比较好的算法吗?

    2009年10月28日 3:33
  • 我有个想法不知是否可行……可不可以通过比较HashCode解决?

    Kaedei.cn
    共同努力,共同提高
    It's never too late to learn
    2009年10月28日 10:30
  • 我有个想法不知是否可行……可不可以通过比较HashCode解决?

    Kaedei.cn
    共同努力,共同提高
    It's never too late to learn
    你好!Kaedei!
         我认为比较HashCode肯定不可行,除非你比较引用的是否是同一个实例,List<T>为引用类型,而引用类型的每个实例的HashCode肯定不同,有一个内部字段负责保存HashCode,每次实例化新对象,这个字段加1,这样可以保证每个实例的HashCode都不同!当然,这种加1的Hash函数性能并不好,所以建议自己定义的引用类型最好重写GetHashCode方法

    周雪峰
    2009年10月29日 6:43
    版主