web-dev-qa-db-fra.com

C # Interruption de la boucle foreach après X nombre d'éléments

Dans ma boucle Foreach, je voudrais m'arrêter après 50 éléments. Comment sortirais-tu de cette boucle foreach lorsque j'atteindrais le 50e élément?

Merci

foreach (ListViewItem lvi in listView.Items)
36
Jade M
int processed = 0;
foreach(ListViewItem lvi in listView.Items)
{
   //do stuff
   if (++processed == 50) break;
}

ou utilisez LINQ

foreach( ListViewItem lvi in listView.Items.Cast<ListViewItem>().Take(50))
{
    //do stuff
}

ou utilisez simplement une boucle for régulière (comme suggéré par @sgriffinusa et @Eric J.)

for(int i = 0; i < 50 && i < listView.Items.Count; i++)
{
    ListViewItem lvi = listView.Items[i];
}
114
Hamish Smith

Pourquoi ne pas simplement utiliser une boucle for normale?

for(int i = 0; i < 50 && i < listView.Items.Count; i++)
{
    ListViewItem lvi = listView.Items[i];
}

Mise à jour pour résoudre le bogue signalé par Ruben et Pragmatrix.

24
sgriffinusa

Ou utilisez simplement une boucle for normale au lieu de foreach. Une boucle for est légèrement plus rapide (bien que vous ne remarquiez pas la différence, sauf dans le code très critique dans le temps).

6
Eric J.

Cela devrait marcher.

int i = 1;
foreach (ListViewItem lvi in listView.Items) {
    ...
    if(++i == 50) break;
}
3
Quintin Robinson
int count = 0;
foreach (ListViewItem lvi in listView.Items)
{
    if(++count > 50) break;
}
2
Chris Missal

Utilisez juste break , comme ça:

int cont = 0;
foreach (ListViewItem lvi in listView.Items) {
   if(cont==50) { //if listViewItem reach 50 break out.
      break; 
   }
   cont++;   //increment cont.
}
0
Caique Romero