2011-06-28 33 views
0

我有2個簡單的實體Linq2Entities分組和計數

  1. 活動
  2. ActivityViews

次活動有2個屬性ActivityID和日期。每次訪問活動時,該實體都允許我查看。

我現在要編寫一個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(); 

這樣的作品,但它的返回annonymous類型的列表,我想一回活動類型的列表。我不想返回僅由它們命令的視圖的數量。

編輯:我收回了我沒有工作的所有,如果現在有一個活動ActivityViews沒有得到返回。

回答

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

現在就着手簡化它。

+0

同意bc你加入它:)。所以你想要一個左外連接? – Nix

+0

是的,對不起。沒有意識到它也有這個問題 – Gavin

+0

感謝你的例子排序。謝謝 – Gavin