【问题标题】:Search for a particular object in a list在列表中搜索特定对象
【发布时间】:2013-03-07 13:47:23
【问题描述】:

我有一个对象列表,我想查看某个特定对象是否在此列表中。但是,当我在列表中使用Contains()IndexOf() 方法时,我得到的结果不正确,因为这使用了我不需要的对象的Equals() 方法。我想找到一个特定的实例,而不是一个似乎具有相同属性值的对象。

【问题讨论】:

    标签: c# list contains


    【解决方案1】:

    如果你想匹配引用,你可以使用:

    if (object.ReferenceEquals(item1, item2))
        ...
    

    强制它比较引用而不是使用Equals()

    或者:

    int index = list.FindIndex(item=>ReferenceEquals(item, target));
    

    (有关详细信息,请参阅MSDN Documentation for List.FindIndex()。)

    【讨论】:

    • OP 已经非常明确地表示他不想通过引用检查项目是否相等,他只想检查列表中是否已经存在 System.Type 的项目!
    • 我认为他没有......他说“我想找到一个特定的实例,而不是一个似乎具有相同属性值的对象。” 他在任何地方都没有提到类型。
    【解决方案2】:

    你可以使用哈希码吗?

    list.where(w => w.GetHashCode() == object.GetHashCode())
    

    【讨论】:

    • 我认为他希望引用相等,而不是对象的内容
    猜你喜欢
    • 2012-11-23
    • 2019-03-10
    • 2020-11-19
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 2011-07-08
    • 1970-01-01
    相关资源
    最近更新 更多