【问题标题】:Linq-select group by & countLinq-选择分组和计数
【发布时间】:2013-08-18 18:30:39
【问题描述】:

控制器应返回用作 D3.js 折线图源的数据。在控制器中,我有一个对象列表,我只对属性“Begin”和 count(Begin) 感兴趣。 Begin 是一个日期时间,我想要将“Begin”在同一天的所有对象分组,然后计算每天的数量。

我尝试选择此信息并以这种方式返回:

        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 不支持指定的类型成员 'Date'。仅支持初始化程序、实体成员和实体导航属性。 ")。

如何正确选择信息?如果有人有关于 D3.js 和 MVC 的示例,我将不胜感激。

【问题讨论】:

    标签: json linq d3.js


    【解决方案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() };
    

    【讨论】:

    • 谢谢!如果我只想得到日期(dd.mm.yyyy)和计数,那么我将如何实现呢?连接 (.. + "." + ..) 不起作用
    • 我不确定您是否可以直接在将在数据库服务器中执行的 linq 查询中执行此操作。可能在对象上有一个只读属性,它将使用这些内部值为您提供 Date/DateTime 对象。
    • 我修改了一下,看看能不能得到日期时间
    猜你喜欢
    • 1970-01-01
    • 2013-04-29
    • 2015-12-19
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多