es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Rendimiento del bucle con la cláusula LINQ

¿Hay alguna diferencia de rendimiento entre ambos?

En mi opinión, el segundo método es más lento porque LINQ debe volver a ejecutar la cláusula “where” en cada iteración, ¿es correcto?

Gracias 🙂

List<string> someObjects = new List<string>() { "one", "two" };

var filteredCollection = someObjects.Where(s => s.Contains('w'));

foreach (string str in filteredCollection)
{
    // algún código
}

“`
List<string> someObjects = new List<string>() { "one", "two" };

foreach (string str in someObjects.Where(s => s.Contains('w')))
{
// algún código
}
“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, puede haber una diferencia de rendimiento entre los dos métodos. El primer método asigna la colección filtrada a una variable y luego itera sobre ella usando el bucle foreach. El segundo método aplica el filtro directamente al bucle foreach utilizando una expresión linq.

    Aunque ambos métodos logran el mismo resultado, el segundo método puede ser más lento debido a que la cláusula Where de la expresión debe ser reevaluada en cada iteración del bucle, mientras que en el primer método solo se evalúa una vez cuando se asigna la colección filtrada a la variable.

    Por lo tanto, si el rendimiento es una preocupación, puede ser mejor usar el primer método para filtrar una colección y luego iterar sobre ella usando el bucle foreach.

Comments are closed.