IEqualityComparer对象内的字符串值

时间:2011-01-25 00:07:30

标签: c# iequalitycomparer

我很可能这样做的方式不对,但是;

我在LINQ中有一个对象列表;

MyObj
  string name
  string somethingElse

List<MyObj> myObjects;

现在我正在尝试查看该列表中的任何对象是否具有字符串值;

所以我有;

if (Model.myObjects.Contains("thisobject", new MyObjComparer()))
{
}

在比较器中我有;

public class MyObjComparer: IEqualityComparer<MyObj>
{
    public bool Equals(string containsString, MyObj obj)
    {
        return obj.name == containsString;
    }
}

如何使用比较器检查对象字段中的字符串值?

3 个答案:

答案 0 :(得分:10)

更简单的方法是:

if (Model.myObjects.Any(o => o.name == "thisobject"))
{
}

答案 1 :(得分:2)

您可以按如下方式使用FindAll方法:

foreach(var item in Model.myObjects.FindAll(x=>x.Contains("thisobject")))
{
 //Do your stuff with item  
}

答案 2 :(得分:2)

相等比较器只能判断两个相同类型的对象是否相等。我不知道你的用例,但你可以简单地做一些像

这样的事情
if (Model.myObjects.Where(x => x.name == "thisobject").Any())
{ 
    // Do something
}