Sitecore сортировать детей по __Созданное поле

У меня есть решение Sitecore 6.6 под управлением MVC и Razor. У меня есть следующая строка;

@Html.Raw(Sitecore.Context.Database.GetItem(myList.Children.LastOrDefault()["myField1"]).Fields["myField2"])

Вышеприведенное работает нормально, за исключением порядка сортировки. Мне нужно получить последний элемент на основе поля __Created. LastOrDefault, кажется, берет последний элемент в дереве, который не всегда соответствует фактическому последнему созданному элементу.

Это можно сделать в одну строку, как указано выше?

1 ответ

Решение

Как насчет этого:

myList.GetChildren()
.OrderBy(x => x[Sitecore.FieldIDs.Created])
.Reverse()
.LastOrDefault()

Я думаю, это тоже будет работать:

myList.GetChildren()
.OrderBy(x => x.Statistics.Created)
.Reverse()
.LastOrDefault()

Имейте в виду, что сначала будут извлечены все дети, а затем произойдет сортировка. Если у вас много детей, это будет медленно.

Одно общее замечание, вы не должны делать это в представлении на самом деле. Вы вкладываете слишком много логики туда. Ваша модель должна предоставить предмет, который вам нужен (последний созданный).

Другие вопросы по тегам