Junior — Middle
¿Puede explicar el concepto de inicialización diferida de resultados en LINQ y cómo funciona?
sobes.tech AI
Respuesta de la IA
En LINQ (Language Integrated Query) en C# se utiliza el concepto de inicialización diferida (perezosa) o ejecución diferida de consultas. Esto significa que la consulta a la colección no se ejecuta en el momento de su declaración, sino solo cuando se accede al resultado, por ejemplo, al recorrerlo en un bucle o al llamar a métodos que requieren materialización (por ejemplo, ToList(), ToArray()).
La ejecución diferida permite:
- Optimizar el rendimiento, ya que las consultas no se ejecutan sin necesidad.
- Construir cadenas complejas de consultas que se ejecutarán en una sola pasada.
Ejemplo:
var numbers = new List<int> {1, 2, 3, 4, 5};
var query = numbers.Where(n => n > 3); // La consulta está declarada, pero no ejecutada
foreach(var num in query) // Aquí se ejecuta la consulta
{
Console.WriteLine(num); // Imprimirá 4 y 5
}
Si modificamos la colección numbers después de declarar la consulta, pero antes de su ejecución, el resultado cambiaría, ya que la consulta se ejecuta en el momento de recorrerla.