Группа Linq и порядок по сумме

117
13

Я просто хочу сделать это SQL в Linq. Но как?

Select Id, sum(Count) 
from dbo.BThread
group by Id
order by sum(Count) desc

Я пробовал это, и его не удалось: результат дает только одну строку. Я ожидаю гораздо больше строк, чем это. Существует много идентификаторов, на которые мне нужно рассчитывать.

var List = (from tbBThread in context.BThread.Take(10)
group tbBThread by tbBThread.Id into bTmp
orderby bTmp.Sum(x => x.Count)
select new BViewModel
{
Id = bTmp.Key,
Id = bTmp.First().Id,
Count = bTmp.Sum(x => x.Count)
}).ToList();

спросил(а) 2021-01-25T16:53:52+03:00 4 месяца, 4 недели назад
1
Решение
77

Take(10) должен быть в конце вашего запроса.

var List = (from tbBThread in context.BThread
group tbBThread by tbBThread.Id into bTmp
orderby bTmp.Sum(x => x.Count)
select new BViewModel
{
Id = bTmp.Key,
Count = bTmp.Sum(x => x.Count)
}).Take(10).ToList();

В противном случае вы будете смотреть только на первые 10 элементов вашего context.BThread которые, похоже, имеют один и тот же Id и, следовательно, входят в одну группу.

И (как сказал Слай в комментариях) удалите второй Id = bTmp.First().Id,

ответил(а) 2021-01-25T16:53:52+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема