2013-03-07 114 views
0

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

+0

什么是对象? – Bastardo 2013-03-07 13:51:48

回答

3

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

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

,迫使它来比较,而不是使用Equals()

或参考:

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

(请参阅MSDN Documentation for List.FindIndex()了解更多详情。)

+0

OP已经非常清楚地表明他不想通过引用来检查项是否相等,他只是想检查一个'System.Type'项目已经存在于列表中! – 2013-03-07 13:56:02

+2

我认为他没有......他说*“我想找到一个特定的**实例**而不是一个似乎具有相同属性值的对象。”*他没有任何关于类型的任何说法。 – 2013-03-07 14:02:35

+0

object.ReferenceEquals(item1,item2)诀窍:) – user1365247 2013-03-07 14:22:39

0

你可以使用哈希码吗?

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

我认为他希望引用是相同的,而不是对象的内容 – Nolonar 2013-03-07 13:49:31