Hãy nói tôi cóCó chọn Tiếp theo là Kết quả trong hai lần lặp qua IEnumerable không?
IEnumerable<int> list = new int[] { 1, 2, 3 };
List<int> filtered = list.Select(item => item * 10).Where(item => item < 20).ToList();
Câu hỏi đặt ra là có hai lần lặp hoặc chỉ là một.
Nói cách khác, đó là tương đương về hiệu suất với:
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);
}
Một nitpick nhỏ: Câu hỏi được gắn thẻ "linq-to-objects" do đó không có cây biểu thức nào liên quan, chỉ lặp đi lặp lại đơn giản thông qua chuỗi cùng với các lời mời ủy nhiệm. – LukeH