我需要按年龄范围聚合的一些数据,例如:
Age | Members
------------------
0-13 | 150
14-19 | 250
20-30 | 400
在我的linq查询中,我使用EntityFunctions.DiffYears根据出生日期来计算年龄:
let age = EntityFunctions.DiffYears(contact.Birthday, today)
然而,如果我按年龄字段对组进行分组,我将获得19,20,21 ...而不是范围。 用linq和实体框架来实现这个的推荐方法是什么?
答案 0 :(得分:4)
有两种方法可以做到这一点:
处理客户端上的分组
首先按照您所描述的年龄对它们进行分组,然后使用linq对结果进行对象,将年龄映射到年龄范围,然后按年龄范围进行分组。见Group by variable integer range using Linq
处理服务器上的分组
定义一个商店程序,将年龄映射到年龄范围(例如,0到13岁之间的年份返回0,19-19之间为1,依此类推),然后在查询中使用此存储过程。