148 votes

Comment puis-je trouver un élément spécifique dans une liste<T> ?

Mon application utilise une liste comme celle-ci :

List<MyClass> list = new List<MyClass>();

En utilisant la Add , une autre instance de MyClass est ajoutée à la liste.

MyClass fournit, entre autres, les méthodes suivantes :

 public void SetId(String Id);
public String GetId();

Comment puis-je trouver une instance spécifique de MyClass en utilisant la méthode GetId ? Je sais qu'il existe la Find , mais je ne sais pas si cela fonctionnerait ici ?!

24voto

zellio Points 8863
var list = new List<MyClass>();
var item = list.Find( x => x.GetId() == "TARGET_ID" );

ou s'il n'y en a qu'un et que vous voulez faire appliquer quelque chose comme SingleOrDefault peut être ce que vous voulez

 var item = list.SingleOrDefault( x => x.GetId() == "TARGET" );

if ( item == null )
    throw new Exception();

14voto

Amritpal Singh Points 1133

Essayer:

  list.Find(item => item.id==myid);

7voto

Ou si vous ne préférez pas utiliser LINQ, vous pouvez le faire à l'ancienne :

 List<MyClass> list = new List<MyClass>();
foreach (MyClass element in list)
{
    if (element.GetId() == "heres_where_you_put_what_you_are_looking_for")
    {

        break; // If you only want to find the first instance a break here would be best for your application
    }
}

5voto

Guffa Points 308133

Vous pouvez également utiliser les extensions LINQ :

 string id = "hello";
MyClass result = list.Where(m => m.GetId() == id).First();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X