2013-08-18 203 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

我修改了一下,看看你是否可以这样做来获取日期时间 –