Кажется, вы не пытаетесь заказать последовательность dispoLinien в порядке возрастания Beginn из Fahrt, но в порядке возрастания Beginn Fahrt последовательностей. Вы не определили сравнение двух последовательностей Beginn Fahrt.
Чтобы продемонстрировать это, я разделил ваше сложное утверждение OrderBy на небольшие шаги, где я проверяю тип каждой части этого OrderBy. Давайте сделаем это для первого элемента вашего dispoLinien:
var dl = dispoLinien.First(); var linienVersion = dl.Linie.GetValidLinienVersionByDate (дата);
Вы не сказали тип linienVersion, но возвращаемая linienVersion имеет свойство Fahrten типа, реализующего IEnumerable. Другими словами: из dl и даты вы можете получить linienVersion, что в качестве последовательности Fahrts.
IEnumerable<Fahrt> fahrten = linienVersion.Fahrten.
var fahrtBeginns = fahrten
.Select(fahrt => fahrt.Beginn);
Таким образом, с каждого dl вы извлекаете коллекцию Beginns of Fahrts.
В результате вы хотите заказать свою коллекцию по возрастанию коллекции Beginns of Fahrts.
Я уверен, что это не то, что вы хотите. Если вы хотите заказать dispLinien в порядке возрастания Beginn Fahrts, вы должны для каждого дл получить самый ранний из всех Fahrts:
var orderedDispoLinien = dispoLinien.OrderBy(dispoLinie =>
dispoLinie.Linie.GetValidLinienVersionByDate(date)
.Fahrten // get only Fahrten
.Where(fahrt => fahrt.Any() // that are not empty
.Select(fahrt => fahrt.Beginn) // from each fahrt take Beginn
.Min(beginn => beginn)); // and use the earliest Beginn Fahrt
Теперь вы отсортировали ваш dispoLinien в порядке возрастания наименьшего Beginn Fahrt, а это означает, что сначала будет дислоцирование с самым ранним Абфахртом.
GroupBy не определяет порядок групп в результате, поэтому он не имеет смысла для OrderBy перед Группировкой. Если вы хотите получить заказываемый результат, вы должны заказать его после GroupBy
Я думаю, что в какой-то момент вам не хватает закрывающей скобки. Прямо сейчас вы заказываете запрос Linq (выберите и т. Д.). – Kilazur
Я просматриваю круглые скобки с высоким освещением, и они находятся в нужном месте. Сначала я выполняю лямбда-выражение, затем выбираю список и использую функцию, определенную в типе списка. Функция возвращает версию vaild для этого списка.После этого выберите список в версии и выберите время начала, которое должно быть заказано. – venter