Мне нравится лямбда-синтаксис, поэтому я придумал этот эквивалент.Я могу видеть, как синтаксис запроса чище для объединений.
var orderedOptions = options_list
.Join(
types_list,
option => option.Type_ID,
type => type.ID,
(option, type) => new { Option = option, Type = type })
.OrderBy(x => x.Type.Ordering)
.Select(x => x.Option);
Для небольшого сокращения (в чем, я не уверен), это создает новый объект только со свойством Ordering вместо всего класса Type.Не сильно отличается здесь, но у меня был большой класс с данными сортировки, и мне нужно только свойство сортировки.Не знаю, имело ли это значение, но его было понятнее.
var orderedOptions = options_list
.Join(
types_list,
option => option.Type_ID,
type => type.ID,
(option, type) => new { Option = option, Ordering = type.Ordering })
.OrderBy(x => x.Ordering)
.Select(x => x.Option);
Похоже, синтаксис запроса позволяет упорядочивать в начальном запросе, в то время как лямбда требует упорядочения после того, как соединение создает новый объект.Возможно, они действительно делают то же самое под покровом: создавая объединенный объект, который будет отсортирован, а затем выбран.