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

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

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