我遇到了一个奇怪的问题。这里我复现了这个问题。
Random r = new Random();
List<int> x = new List<int> {1, 2, 3, 4, 5, 6};
var e = x.OrderBy(i => r.Next());
var list1 = e.ToList();
var list2 = e.ToList();
bool b = list1.SequenceEqual(list2);
Console.WriteLine(b); // prints false
直到现在,我以为 Linq 函数在调用时被执行。但是,在这个方法中,似乎在我调用 ToList
后,Linq 函数 OrderBy
再次执行了。为什么会这样?