Linq2Entities Группировка и подсчет - PullRequest
0 голосов
/ 28 июня 2011

У меня есть 2 простых объекта

  1. Activity
  2. ActivityViews

Activity Views имеет 2 свойства ActivityID и DateTime.Эта сущность позволяет мне видеть каждый раз, когда к Activity обращались.

Теперь я хочу написать запрос LinqToEntity, который возвращает список действий в порядке убывания того, сколько раз они были просмотрены.До сих пор я придумал этот

  var activities= ((from a in db.Activities
                    join av in db.ActivityViews on a.ID equals av.Activity.ID
                    group a by new { a } into g
                    select new { g, No = g.Count() }).OrderByDescending(x => x.No)).Select(x => x.g).ToList();

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

Редактировать: Я забираю то, что у меня вообще не работает, если сейчас есть ActivityViews для Activity, ничего не возвращается.

1 Ответ

1 голос
/ 28 июня 2011

В основном, когда вы группируете все, что вы группируете, это ключ, поэтому, если вы просто выберите ключ, вы получите то, что вам нужно.

Вот решение этой проблемы.

var activities= 
  (
    (
       from a in db.Activities
       join av in db.ActivityViews
         on a.ID equals av.Activity.ID
       group a by a  into g
       select new { 
          a = g.Key, 
          No = g.Count() }
       ).OrderByDescending(x => x.No)
  ).Select(x => x.a)
  .ToList();

Сейчас работаем над упрощением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...