Si j'ai une boucle foreach
, existe-t-il un moyen de vérifier un booléen également?
Je ne veux pas vérifier une fois à l'intérieur de la foreach()
puis casser par exemple. Je veux foreach
sur une collection et en même temps évaluer si quelque chose est vrai.
Par exemple, je ne veux pas faire:
IEnumerable<Job> jobs = currentJobs;
foreach(Job job in jobs)
{
if (found)
break;
}
Vous pouvez toujours le transformer en boucle for.
for (i = 0; i < jobs.Count && booleanTrue; i++) {
// do a lot of great stuff
}
Vous devrez également modifier les travaux de IEnumerable
à IList
. Je pense que IList
servirait mieux vos objectifs. IEnumerable
lazy évalue les éléments juste avant d'en avoir besoin et n'inclut pas les méthodes d'aide à la collecte associées.
Essayez d'utiliser TakeWhile .
De l'exemple:
string[] fruits = { "Apple", "banana", "mango", "orange",
"passionfruit", "grape" };
IEnumerable<string> query =
fruits.TakeWhile(fruit => String.Compare("orange", fruit, true) != 0);
foreach (string fruit in query)
{
Console.WriteLine(fruit);
}
/*
This code produces the following output:
Apple
banana
mango
*/
J'ai trouvé une autre approche:
foreach (var car in cars) if (!rentedCars.Contains(car))
{
// Magic
}
Je ne l'aime pas énormément, mais peut-être un peu de LINQ?
bool yourBool = false;
foreach(var item in
collection.TakeWhile(x => yourBool))
{...}
?
Ai-je bien compris que vous
Je ne comprends pas la résistance à l'utilisation des boucles foreach
; Je m'en tenir à ce que vous avez ou
foreach(var job in jobs.TakeWhile(x => someCondition(x)) {
someAction(job);
}
Non, un foreach fonctionne simplement pour chaque élément.
Vous pouvez combiner plusieurs conditions dans une boucle for(a; b; c)
régulière. Comme for(a; b && x; c)