我很可能以错误的方式这样做。

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

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

有帮助吗?

解决方案

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

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

其他提示

您可以使用Findall方法如下:

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

相等性比较只能分辨出同一类型的两个对象是否相等。我不知道你的用例,但是你能做

if (Model.myObjects.Where(x => x.name == "thisobject").Any())
{ 
    // Do something
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top