質問

私はおそらくこれを間違った方法でやっていますが、

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  
}

平等比較は、同じタイプの2つのオブジェクトが等しいかどうかを判断するのに適しています。私はあなたのユースケースを知りませんが、あなたは単にようなことをすることができますか

if (Model.myObjects.Where(x => x.name == "thisobject").Any())
{ 
    // Do something
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top