2013-03-07 134 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