Sto cercando di comprendere cosa fa il compilatore C# quando sto concatenando i metodi linq, in particolare quando concatenando lo stesso metodo più volte.Comprendere come il compilatore C# si occupa di concatenare i metodi linq
Esempio semplice: Diciamo che sto provando a filtrare una sequenza di ints in base a due condizioni.
La cosa più ovvia da fare è qualcosa di simile:
IEnumerable<int> Method1(IEnumerable<int> input)
{
return input.Where(i => i % 3 == 0 && i % 5 == 0);
}
Ma noi potrebbe concatenare anche le modalità in cui, con una sola condizione in ciascuna:
IEnumerable<int> Method2(IEnumerable<int> input)
{
return input.Where(i => i % 3 == 0).Where(i => i % 5 == 0);
}
Ho avuto un guarda l'IL in Reflector; è ovviamente diverso per i due metodi, ma analizzando ulteriormente va oltre la mia conoscenza in questo momento :)
vorrei sapere:
a) ciò che il compilatore fa in modo diverso in ogni caso, e perché.
b) Nessuna implicazioni sulle prestazioni (non cercando di micro-ottimizzare;! Solo curioso)
Bella risposta. Abbiamo bisogno di più materiale come questo su Stackoverflow. –