Estoy tratando de entender lo que hace el compilador C# cuando estoy encadenando métodos linq, particularmente cuando encadenar el mismo método varias veces.Comprender cómo el compilador de C# trata con los métodos de encadenamiento linq
Ejemplo simple: Digamos que estoy tratando de filtrar una secuencia de entradas basada en dos condiciones.
La primera cosa que puede hacer es algo como esto:
IEnumerable<int> Method1(IEnumerable<int> input)
{
return input.Where(i => i % 3 == 0 && i % 5 == 0);
}
Pero podría también encadenar los métodos en los que, con una sola condición en cada uno:
IEnumerable<int> Method2(IEnumerable<int> input)
{
return input.Where(i => i % 3 == 0).Where(i => i % 5 == 0);
}
que tenía una mira el IL en Reflector; es obviamente diferente para los dos métodos, pero analizándolo más está más allá de mis conocimientos en el momento :)
me gustaría saber:
a) lo que hace el compilador de manera diferente en cada caso, y por qué.
b) ¿existen implicaciones de rendimiento (no tratando de optimizar el micro-;! Curiosidad)
Nice answer. Necesitamos más material como este en Stackoverflow. –