我有類似:C#使用對象的屬性,而不是參考了List.Contains()
public class MyClass
{
public string Type { get; set; }
public int Value { get; set; }
}
,然後我有:
List<MyClass> myList = new List<MyClass>()
// ... Populate myList
if (myList.Contains("testType"))
{
// Do something
}
在上面的代碼,我想myList.Contains()
匹配在Type屬性而不是MyClass對象引用上。我如何實現這一目標?我是否使用IComparable
或ICompare
接口,是否覆蓋MyClass.Equals()
,或者是否足以覆蓋MyClass的字符串轉換?
編輯:做與覆蓋Equals()
一些測試和MyClass
串投,實現ICompare
和IComparable
後,我發現,這些方法都沒有工作。實際上,如果我要重寫字符串MyClass
,就像myList.Contains((MyClass)"testType")
那樣工作似乎是什麼。不過,我想我喜歡的Scrum梅斯特的回答更好:)
hhmmm ......肯定比我更簡單;) – IAbstract
附:確保你添加使用System.Linq;在.cs文件的頂部 - 這使我絆倒了幾次:-) –
非常優雅。這絕對會進入我的代碼片段庫。實際上,在發佈了我的類型字符串在我的列表中必須唯一的問題後,我才意識到,所以我最終使用了「Dictionary」。 –
Ozzah