Een item zoeken in een lijst<> met behulp van C#

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:

  1. Enumerable.Where:

    list.Where(i => i.Property == value).FirstOrDefault();       // C# 3.0+
    
  2. 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)(nullvoor 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 is
  • object.Equals(a,b)voor de meeste scenario’s waarbij het type onbekend is of de vergelijking mogelijk is overschreven
  • string.Equals(a,b,StringComparison)voor het vergelijken van strings
  • object.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.

Other episodes