Question

Je fais tout à fait peut-être cela me dans le mauvais sens, mais;

J'ai une liste d'objets dans LINQ;

MyObj
  string name
  string somethingElse

List<MyObj> myObjects;

Maintenant, je suis en train de voir si un objet dans cette liste a une valeur de chaîne;

J'ai;

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

Dans le comparateur je;

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

Comment puis-je utiliser un comparateur pour vérifier contre une valeur de chaîne dans un champ des objets?

Était-ce utile?

La solution

Une méthode plus simple est de faire ceci:

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

Autres conseils

Vous pouvez utiliser la méthode FindAll comme suit:

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

Le comparateur d'égalité n'est bon de dire si deux objets du même type sont égaux. Je ne connais pas votre cas d'utilisation, mais pourriez-vous simplement faire quelque chose comme

if (Model.myObjects.Where(x => x.name == "thisobject").Any())
{ 
    // Do something
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top