如何使用LINQ按日期分组统计表中数据条数,适配Highchart组件需求
LINQ 按日期分组统计数据库数据解决方案
原代码问题
当前写法存在两个核心问题:
- select 子句中的子查询统计的是当前房间所有日期的分组总个数,导致每个
HighlinePie对象的Value都是固定的该房间总日期数,不是对应日期的条目数量 - 未做分组聚合,会返回和有效
ApplySchedule条目数量一致的重复数据,得不到按日期聚合后的结果
修正后代码
var highChartsData = (from a in db.roomdetails join b in db.ApplySchedule on a.RoomId equals b.RoomID where b.Status == true // 以房间名称、日期为分组键聚合数据 group b by new { a.RoomName, b.MDate } into g select new HighlinePie { Title = g.Key.RoomName, Date = g.Key.MDate, Value = g.Count() }).ToList();
上述代码返回的列表中,每条数据对应单个房间某一天的有效条目统计值,符合Highchart组件的数据要求。
如果你需要直接生成指定格式的字符串结果,可追加以下处理:
// 按 标题,日期,数量 格式输出 var formatOutput = highChartsData.Select(item => $"{item.Title},{item.Date:dd/MM/yyyy},{item.Value}").ToList();
内容的提问来源于stack exchange,提问作者Ashwin
相关产品推荐
相关产品推荐

