Я использую Entity Framework 6 и хочу сгруппировать некоторые данные с помощью GROUP BY
. Я должен сортировать обе группы и данные внутри группы. Чтобы сделать все как можно проще, я написал минималистский пример.Сортировка в группе в Entity Framework
Предположим, у нас есть статьи с Created-Field (only Date)
. Я хочу сгруппировать все статьи, написанные в один день. И я хочу сгруппировать статьи внутри группы по Created-Field
.
Это был мой подход:
var articleGroups = DBContext.Articles
.OrderByDescending(x => x.Created)
.GroupBy(x => x.Created)
.OrderByDescending(x => x.Key)
;
Группы упорядочиваются отлично, но упорядочение самой группы полностью игнорируется. Что я делаю не так?
Не сказать, что это решение, но вы пробовали группировать и сортировать в памяти, а не в базе данных? (то есть добавить 'ToList()' перед 'GroupBy()'), работает ли он? – Jcl
Я уже пробовал это, и он работает. Сортировка в памяти работает отлично, но это не решение для меня, так как мое приложение должно быть масштабируемым. Количество записей в моем приложении не совсем небольшое. –
Btw, если это был Linq to Objects, ваш первоначальный подход к сортировке был бы совершенно приемлемым: 'Объекты IGrouping приводятся в порядке, основанном на порядке элементов в источнике, который создал первый ключ каждая IGrouping . Элементы в группировке выводятся в том порядке, в котором они появляются в источнике. '([Источник] (https://msdn.microsoft.com/en-us/library/vstudio/bb534501 (v = vs.100) .aspx)) В Linq to Entity это поведение не гарантируется, но зависит от поставщика. –