Ik heb een lijst die een verzameling objecten bevat.
Hoe kan ik zoeken naar een item in deze lijst waar object.Property == myValue
?
Antwoord 1, autoriteit 100%
Je hebt een paar opties:
-
list.Where(i => i.Property == value).FirstOrDefault(); // C# 3.0+
-
Met behulp van Lijst. Zoek:
list.Find(i => i.Property == value); // C# 3.0+ list.Find(delegate(Item i) { return i.Property == value; }); // C# 2.0+
Beide opties retourneren default(T)
(null
voor referentietypes) als er geen overeenkomst is gevonden.
Zoals vermeld in de opmerkingen hieronder, moet u de juiste vorm van vergelijking voor uw scenario gebruiken:
==
voor eenvoudige waardetypes of waar het gebruik van overbelasting door operators gewenst isobject.Equals(a,b)
voor de meeste scenario’s waarbij het type onbekend is of de vergelijking mogelijk is overschrevenstring.Equals(a,b,StringComparison)
voor het vergelijken van stringsobject.ReferenceEquals(a,b)
voor identiteitsvergelijkingen, die meestal de snelste zijn
Antwoord 2, autoriteit 20%
Wat is er mis met Lijst .Vind??
Ik denk dat we meer informatie nodig hebben over wat je hebt gedaan en waarom het mislukt, voordat we echt nuttige antwoorden kunnen geven.
Antwoord 3, autoriteit 4%
var myItem = myList.Find(item => item.property == "something");
Antwoord 4
item = objects.Find(obj => obj.property==myValue);
Antwoord 5
Voor .NET 2.0:
list.Find(delegate(Item i) { return i.Property == someValue; });
Antwoord 6
list.FirstOrDefault(i => i.property == someValue);
Dit is gebaseerd op het antwoord van Drew hierboven, maar is iets beknopter.