我的查询如下,(postgresql)
SELECT split_part(grp.agerange, '*',2) as age_range,
round(sum(salary)) AS total
FROM
(
SELECT salary,
CASE
WHEN(date_part('year', age(birth_date)) > 0 AND date_part('year', age(birth_date)) <= 8) THEN '0 - 8 age'
WHEN(date_part('year', age(birth_date)) > 8 AND date_part('year', age(birth_date)) <= 16) THEN '8 - 16 age'
WHEN(date_part('year', age(birth_date)) > 16 AND date_part('year', age(birth_date)) <= 24) THEN '16 - 24 age'
WHEN(date_part('year', age(birth_date)) > 24) THEN '24 < age' ELSE 'Unknown'
END as agerange
FROM sde.employee
) grp
GROUP BY grp.agerange
ORDER BY grp.agerange;
那么我可以使用 linq 在 Entity Framework 核心 3.0 Employee 模型中创建查询吗?
public class Employee{
public string Id {get;set;}
public string Name {get;set;}
public decimal Salary {get;set;}
public DateTime? BirthDate {get;set;}
}
从我的数据库上下文中:
var grouped = _context.Employees.Group(????
Birthdate 是 Nullable 类型。
最佳答案
您可以只使用条件运算符 ? 或 Select 语句中的 if 语句,然后按该结果分组....
var grouped = _context.Employees
.Select(e => new { AgeRange = e.birth_date.Year > 24 ? "24 < age" : etc.});
.Group(e => e.AgeRange);
关于c# - 我可以在 Entity Framework 核心和 linq 中编写查询时的案例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60618680/