У меня возникла странная проблема. Здесь я воспроизвел проблему.
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
выполняется снова. Почему это так?