情形1執行流程
var numbers = new List<int>();
numbers.Add (1);
IEnumerable<int> query = numbers.Select (n => n * 10); // Build query
numbers.Add (2);
//Use or execute query
情形2
var numbers = new List<int>() { 1, 2 };
numbers.Add(4);
List<int> query = numbers
.Select (n => n * 10)
.ToList(); // Executes immediately into a List<int>
numbers.Add(3);
numbers.Clear();
//Use or execute query
爲什麼在第一種情況下查詢包含1,2-
在第二種情況下查詢僅包含1,2, 4但不是3,是因爲我們正在調用.ToList()方法。
如果你在select中的代碼上放置一個斷點,你可以看到這個。只有在查詢被枚舉後它纔會中斷。 –