Сортировка параметров группировки в Linq

145
15 февраля 2019, 10:50

Есть БД с данными, таблица, в которой 2 столбца - UserId, CandidatId. Задача - получить количество User-ов с Number 1, 2, n и вывести в формате Json. Уже имею решение

var choises = from voter in voters
                      group voter by voter.CandidatId into g
                      select new { Id = g.Key, count = g.Count() };

но проблема в том, что Number-s сортируются в порядке увеличения, а именно

[{"Id":4,"count":35},{"Id":1,"count":36},{"Id":5,"count":40},{"Id":3,"count":43},{"Id":2,"count":50}]

Вопрос: Как произвести сортировку Id, что бы результат был критерий сортировки был не count, а Id? Заранее спасибо.

Answer 1

Укажите с помощью orderby то, что вам необходимо.

Например:

var choises = from voter in voters
    orderby voter.CandidatId
    group voter by voter.CandidatId into g
    select new { Id = g.Key, count = g.Count() };

Либо сортируйте уже группу:

var choises = from voter in voters
    group voter by voter.CandidatId into g
    orderby g.Key
    select new { Id = g.Key, count = g.Count() };

Здесь уже смотрите сами что именно вы хотите и как именно хотите этого достичь.

Вообще лично я не люблю такой вид LINQ, ведь проще и понятней написать что то вроде:

var choises = voters.GroupBy(x => x.CandidatId)
    .Select(x => new {Id = x.Key, count = x.Count()});

Ну и сортировка также просто добавляется, к примеру, в самый конец .OrderBy(x => x.Id).
Так что смотрите, может и вам будет этот способ удобней...

READ ALSO
Определить, какой примитивный коллайдер из составного коллайдера столкнулся с объектом

Определить, какой примитивный коллайдер из составного коллайдера столкнулся с объектом

Есть обьект(1), он сталкивается с другим обьектом(2), коллайдер у которого составнойКак узнать с каким коллайдером обьекта(2) столкнулся обьекст(1)?

155
C# копирование свойств с помощью reflection

C# копирование свойств с помощью reflection

Необходимо копировать все публичные свойства из одного объекта в другой объект такого же типаВ результате раздумий родился следующий код

164
Оптимизация Content под разные разрешения Unity

Оптимизация Content под разные разрешения Unity

Имеется список кнопок, которые расположены одна под другой и не вмещающихся в видимую область на девайсахПри помощи Scroll Rect реализовано "проматывание"...

141
Не получается подключить библиотеку в Visual Stidio С#

Не получается подключить библиотеку в Visual Stidio С#

Доброго времени сутокСтолкнулся с проблемой:не могу подключить библиотеку в Visual Stidio

163