sql - Entity Framework 核心如何使用 CaseWhen 语句
问题描述
我正在开发一个 ASP.NET Core 3.1 项目。我在 SQL 中有一个与此类似的查询:
SELECT
SUM(DATEDIFF(DAY,
CASE WHEN FromDate < '2020-03-10' THEN '2020-03-10' ELSE FromDate END,
CASE WHEN ToDate > '2020-03-20' THEN '2020-03-20' ELSE FromDate END) + 1) AS ddd
FROM
leave_Tbl
但我需要在 EF Core 3.1 中创建此查询
我写了这个查询:
var query = _context.Leave_Tbl.Sum(p => EF.Functions.DateDiffDay(p.FromDate_DaysLeave, p.ToDate_DaysLeave));
但我不知道如何使用该case when
语句。
解决方案
你可以这样做。
DateTime dt1 = DateTime.Now;
DateTime dt2 = DateTime.Now;
DateTime dt3 = DateTime.Now;
DateTime dt4 = DateTime.Now;
var query = _context.Leave_Tbl.Sum(p => EF.Functions.DateDiffDay(dt1 > dt2 ? dt3 : dt4, dt1 > dt2 ? dt3 : dt4));
为简单起见,我只取了这些日期。
推荐阅读
- java - 如何阻止在此实例中调用构造函数
- python - Python UDP 广播传输问题
- sql - 运行不带参数的 SQL 查询
- hadoop - 如何修复用于计算一列并按另一列分组的配置单元代码?
- javascript - 为什么我的单选按钮验证不起作用
- java - ViewModelProvider.Factory 在 Android 上使用 Dagger 和 Java 的片段上保持为空
- node.js - 使用 formData 的 Express 节点获取的无效 json 响应正文错误
- angular - 通过@Input 将数据传递给子节点与从服务或存储中检索
- python - 管道和子流程模块有什么区别?
- swift - 如何快速制作一个空对象