C#使用对象的属性而不是List.Contains()的引用

Ozz*_*zah 5 c# list

我有类似的东西:

public class MyClass
{
  public string Type { get; set; }
  public int Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后我有:

List<MyClass> myList = new List<MyClass>()

// ... Populate myList

if (myList.Contains("testType"))
{
  // Do something
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我想myList.Contains()匹配Type属性而不是MyClass对象引用.我该如何实现这一目标?我是否使用IComparableICompare接口,是否覆盖MyClass.Equals(),或者是否足以覆盖MyClass的字符串强制转换?

编辑:在完成一些测试与覆盖Equals()和字符串演员MyClass,实现ICompareIComparable,我发现这些方法都不起作用.实际上,如果我要覆盖MyClass字符串的强制转换,似乎会有效myList.Contains((MyClass)"testType").但是我觉得我更喜欢Scrum Meister的答案:)

The*_*ter 9

您可以使用Any扩展方法:

if (myList.Any(x => x.Type == "testType"))
{
  // Do something
}
Run Code Online (Sandbox Code Playgroud)