Let dire che hoSeleziona seguito da Dove compaiono due iterazioni su IEnumerable?
IEnumerable<int> list = new int[] { 1, 2, 3 };
List<int> filtered = list.Select(item => item * 10).Where(item => item < 20).ToList();
La domanda è: ci sono due iterazioni o solo uno.
In altre parole, è che equivalente in prestazioni:
IEnumerable<int> list = new int[] { 1, 2, 3 };
List<int> filtered = new List<int>();
foreach(int item in list) {
int newItem = item * 10;
if(newItem < 20)
filtered.Add(newItem);
}
Un piccolo nitpick: la domanda è contrassegnata da "linq-to-objects", quindi non ci sono alberi di espressione coinvolti, solo l'iterazione diretta attraverso la sequenza insieme alle chiamate dei delegati. – LukeH