IequalityComparer -String -Wert innerhalb des Objekts
-
24-10-2019 - |
Frage
Ich mache das möglicherweise falsch, aber;
Ich habe eine Liste von Objekten in Linq;
MyObj
string name
string somethingElse
List<MyObj> myObjects;
Jetzt versuche ich zu sehen, ob ein Objekt in dieser Liste einen String -Wert hat.
Also habe ich;
if (Model.myObjects.Contains("thisobject", new MyObjComparer()))
{
}
Im Vergleich habe ich;
public class MyObjComparer: IEqualityComparer<MyObj>
{
public bool Equals(string containsString, MyObj obj)
{
return obj.name == containsString;
}
}
Wie kann ich einen Vergleiche verwenden, um in einem Feld eines Objekts gegen einen Zeichenfolgenwert zu überprüfen?
Lösung
Eine einfachere Methode ist, dies zu tun:
if (Model.myObjects.Any(o => o.name == "thisobject"))
{
}
Andere Tipps
Sie können die Findall -Methode wie folgt verwenden:
foreach(var item in Model.myObjects.FindAll(x=>x.Contains("thisobject")))
{
//Do your stuff with item
}
Der Gleichheitsvergleich ist nur gut zu erkennen, ob zwei Objekte desselben Typs gleich sind. Ich kenne Ihren Anwendungsfall nicht, aber könnten Sie einfach so etwas tun
if (Model.myObjects.Where(x => x.name == "thisobject").Any())
{
// Do something
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow