Встроенные операторы LINQ используют ожидаемые операции сортировки (для LINQ-to-Objects он делает это, используя Comparer<T>.Default
. Ваше лямбда-выражение строго типизировано; за кулисами компилятор вывел для вас несколько обобщений - это на самом деле:
var newList = Enumerable.OrderBy<Product,DateTime>(
ProductsList, Product => Product.Added).ToList();
Он уже знает , что это DateTime
, поэтому единственный раз, когда вам нужно что-то сделать здесь, - это если ваши даты содержат диапазон разных часовых поясов. Конечно, в часовом поясе у вас должно быть все в порядке, но вы можете (если вы параноик) конвертировать все в UTC - я не думаю вам нужно сделать это в вашем случае , но:
var newList = ProductsList.OrderBy(
Product => Product.Added.ToUniversalTime()).ToList();
Обратите внимание, что это фактически создает второй список (он не меняет порядок оригинального списка); Вы можете использовать код здесь , чтобы выполнить сортировку на месте с помощью лямбды:
ProductsList.Sort(Product => Product.Added);