我需要一些按年龄范围汇总的数据,例如:
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 和 Entity Framework 完成此操作的推荐方法是什么?
最佳答案
有两种方法可以做到这一点:
在客户端处理分组
首先按照您的描述按年龄对它们进行分组,然后在结果上使用 linq to objects 将年龄映射到一个年龄范围,然后按年龄范围分组。见 Group by variable integer range using Linq
在服务器上处理分组
定义一个存储过程,将年龄映射到一个年龄范围(例如,对于 0 到 13 岁之间的年龄返回 0,对于 14-19 岁之间的年龄返回 1,等等),然后在您的查询中使用这个存储过程。
关于linq - 使用 linq 和 Entity Framework 按值范围分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12572886/