我嘗試刪除array
中的前3個元素與LinQ Where
擴展功能。Linq本地計數器關閉不同的結果VS手錶
下面是一個例子:
var array = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var count = 3;
var deletedTest1 = 0;
var test1 = array.Where(x => ++deletedTest1 > count).ToList();
Console.WriteLine($"{{{String.Join(", ", test1)}}}");
var deletedTest2 = 0;
var test2 = array.Where(x => ++deletedTest2 > count).AsEnumerable();
Console.WriteLine($"{{{String.Join(", ", test2)}}}");
var deletedTest3 = 0;
var test3 = array.Where(x => ++deletedTest3 > count);
Console.WriteLine($"{{{String.Join(", ", test3)}}}");
var deletedTest4 = 0;
var test4 = array.Where(x => ++deletedTest4 > count).ToArray();
Console.WriteLine($"{{{String.Join(", ", test4)}}}");
它工作正常,並在每一種情況下,我有{ 4, 5, 6, 7, 8, 9 }
結果控制檯。
但在watch在Visual Studio 2015年更新3 test2
和test3
情況下,我有錯誤的結果:
任何人都可以解釋爲什麼一切都很好,當我在其他情況下使用.ToList()
和.ToArray()
與錯?
這是錯誤嗎?
隨着'ToList()'和'ToArray的()'你的數據物化到一個列表/陣列。其他人都是'IEnumerable',它們有效地承諾運行數據,並且在'Console.WriteLine'中運行它們兩次,一次在調試器中查看它們。沒有錯誤。 – DavidG