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?

War es hilfreich?

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
scroll top