3 votes

Boucle sur les éléments dans un dictionnaire c#

Je veux faire quelque chose avec chaque objet dans un dictionnaire C#. keyVal.Value semble un peu gênant :

foreach (KeyValuePair<int, Customer> keyVal in customers) {
    DoSomething(keyVal.Value);
}

Existe-t-il un moyen plus agréable de faire cela tout en étant rapide ?

6voto

Oded Points 271275

El Dictionary a un Values sur laquelle vous pouvez directement itérer :

foreach(var cust in customer.Values)
{
  DoSomething(cust);
}

Une alternative, si vous pouvez utiliser LINQ comme le montre Arie van Someren dans sa réponse :

customers.Values.Select(cust => DoSomething(cust));

Ou :

customers.Select(cust => DoSomething(cust.Value));

5voto

SLaks Points 391154
foreach (Customer c in customers.Values)

4voto

viggity Points 5342

Vous pouvez toujours itérer sur les clés et obtenir les valeurs. Ou bien, vous pouvez itérer uniquement sur les valeurs.

foreach(var key in customers.Keys)
{
    DoSomething(customers[key]);
}

ou

foreach(var customer in customer.Values)
{
    DoSomething(customer);
}

3voto

Arie van Someren Points 445
customers.Select( customer => DoSomething(customer.Value) );

1voto

Kyle Trauberman Points 16049

Si tout ce qui vous intéresse, ce sont les valeurs, et non les clés, alors vous pouvez utiliser IDictionary.Values pour itérer.

foreach (Customer val in customers.Values) {
    DoSomething(val);
}

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