3

我很可能这样做是错误的,但是;

我在 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;
    }
}

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

4

3 回答 3

10

一个更简单的方法是这样做:

if (Model.myObjects.Any(o => o.name == "thisobject"))
{
}
于 2011-01-25T00:12:55.387 回答
2

您可以使用 FindAll 方法,如下所示:

foreach(var item in Model.myObjects.FindAll(x=>x.Contains("thisobject")))
{
 //Do your stuff with item  
}
于 2011-01-25T00:11:25.983 回答
2

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

if (Model.myObjects.Where(x => x.name == "thisobject").Any())
{ 
    // Do something
}
于 2011-01-25T00:12:07.103 回答