Necesito iterar sobre una Lista de objetos, haciendo algo solo para los objetos que tienen una propiedad booleana establecida en verdadero. Me estoy debatiendo entre este códigoLINQ + Foreach vs Foreach + Si
foreach (RouteParameter parameter in parameters.Where(p => p.Condition))
{ //do something }
y este código
foreach (RouteParameter parameter in parameters)
{
if !parameter.Condition
continue;
//do something
}
El primer código es, obviamente, más limpio, pero sospecho que va a un bucle sobre la lista dos veces - una vez para la consulta y una vez para el foreach. Esta no será una gran lista, así que no estoy demasiado preocupado por el rendimiento, pero la idea de repetir dos veces solo errores me.
Pregunta: ¿Existe una manera clara/bonita de escribir esto sin bucles dos veces?
Resulta que yo había entendido mal la forma en que funciona ejecución diferida de LINQ, y estas formas son en realidad idénticos en ejecución. Ojalá pudiera marcar múltiples respuestas, porque todos los que están a continuación agregan algo. – Joel