Linq2Entities分组和计数

时间:2011-06-28 17:42:37

标签: linq-to-entities

我有两个简单的实体

  1. 活动
  2. ActivityViews
  3. 活动视图有2个属性ActivityID和DateTime。这个实体允许我每次访问活动时都能看到。

    我现在想编写一个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();
    

    它有点工作,但它返回了一个匿名类型列表,我想得到一个活动类型列表。我不希望返回视图的数量,只是为了让它们被它们命令。

    编辑:我把它拿回来的东西根本不起作用,如果现在有一个Activity的ActivityViews没有返回任何内容。

1 个答案:

答案 0 :(得分:1)

基本上,如果您将分组的任何内容归为关键,那么如果您只选择密钥,您将获得所需的密钥。

这将是一个解决方案。

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();

立即着手解决此问题。