linq - 使用 linq 和 Entity Framework 按值范围分组

标签 linq entity-framework linq-to-entities

我需要一些按年龄范围汇总的数据,例如:

 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/

相关文章:

entity-framework - 如何全局优先在 Entity Framework 代码中添加表前缀?

linq - 使用 linq 进行 foreach 删除

c# - 带有 Entity Framework 的 MySql 连接器 : Comparing Char(36) GUIDs in a LINQ Where clause

wpf - 使用 XAML 基于另一个 ComboBox 填充 ComboBox

c# - Linq to Entities 连接

c# - 有没有办法将这两个 LINQ 语句合并为一个

php - LINQ 表达式?

无法从具有多个返回的 Select 中的用法推断出 C# 类型参数

c# - 在 WebApi Controller 中使用导航属性而不是 LINQ Join

c# - 如何选择 LINQ 数据表连接中的所有列?