IEqualityComparer valeur chaîne dans l'objet
-
24-10-2019 - |
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?
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