首页 > 解决方案 > 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语句。

标签: sqlsql-serverentity-frameworkasp.net-coreentity-framework-core

解决方案


你可以这样做。

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));

为简单起见,我只取了这些日期。


推荐阅读