2013-08-18 154 views
0

控制器應返回用作D3.js折線圖的源的數據。在控制器中,我有一個對象列表,我只對屬性「開始」和計數(開始)感興趣。開始是一個日期時間,我想要的是將「開始」在同一天的所有對象進行分組,然後計算每天的數量。Linq-select group by&count

我儘量選擇此信息並返回這樣說:

 var results = from a in db.Questionaires 
        group a by a.Begin.Date into g 
        select new { Date = g.Key, Count = g.Count() }; 

     return Json(results, JsonRequestBehavior.AllowGet); 

不幸的是,我發現了一個錯誤,因爲group by子句似乎是錯誤的(「指定的類型成員‘日期’爲不支持LINQ to Entities,只支持初始化器,實體成員和實體導航屬性。「)。

如何正確選擇信息?如果有人在D3.js和MVC上有一些例子,我會很感激。

回答

1

你應該試試這個

var results = from a in db.Questionaires 
        group a by new { y = a.Begin.Year, m = a.Begin.Month, d = a.Begin.Day} 
        into g 
        select new { Day = g.Key.d, Year = g.Key.y, 
           Month = g.Key.m, Count = g.Count(), 
           Date = g.Select(d=>d.Begin).FirstOrDefault() }; 
+0

謝謝!如果我想只有結果日期(dd.mm.yyyy)和計數,那麼我將如何實現呢?連接(.. +「。」+ ..)不起作用 – peter

+0

我不確定您可以直接在數據庫服務器中執行的linq查詢中執行此操作。可能在對象上具有隻讀屬性,該屬性將使用這些內部值爲您提供Date/DateTime對象。 –

+1

我修改了一下,看看你是否可以這樣做來獲取日期時間 –