8
votes

Comment puis-je limiter une boucle de foreseach N.

En supposant que j'ai la boucle suivante: xxx

Comment puis-je le garder d'exécution plus souvent que n fois?


2 commentaires

Pour un nouveau programmeur, veillez à examiner les réponses qui font des compteurs explicites dans des boucles, même si vous allez finalement pour l'une des approches prendre (50) .


@Anthonypegram: Très bonne suggestion pour quelqu'un qui apprend.


6 Réponses :


10
votes

Vous pouvez essayer xxx

note que vous devez appeler casting () pour convertir datarswcollection à < Code> iEnumerable , qui vous permettra d'utiliser la méthode de l'extension prise () .


1 commentaires

Avez-vous essayé ce code? Il n'y a pas de méthode directement disponible sur le datarswcollection .



3
votes

Option 1: avoir un compteur en cours d'exécution:

for(int i = 0; i <= 50; i++) {
    // This might actually crash if there are fewer than 50 rows
    var row = rows[i]; 
}


0 commentaires

3
votes

Idéalement, modifiez votre requête d'origine pour renvoyer seulement 50 lignes. Il ne sert à rien de chercher plus que ce que vous voulez utiliser.

D'autres ont fourni de bonnes alternatives si ce n'est pas une option.


0 commentaires

20
votes

Dans l'affaire Les lignes sont réellement issues de datatable.Rows , le simple prend Les réponses données ne fonctionneront pas comme datarswcollection implémente uniquement l'interface ienumerable non générique, alors que LINQ a besoin du générique. Vous aurez besoin de quelque chose comme: xxx

ou xxx


2 commentaires

Vous m'avez fait hésitant à corriger les fautes de frappe;) était le signe plus à la fin du deuxième exemple intentionnel?


@Jamesjohnson: Nope, juste une faute de frappe cette fois :)



1
votes

Essayez ceci:

foreach (DataRow dr in table.Rows.Cast<DataRow>().Take(50))
{
    //your logic
}


0 commentaires

0
votes

Le .Cast () Xxx


0 commentaires