一尘不染

Entity Framework与“ ASE THE NHEN”(T-SQL)等效吗?

sql

我有一个Transact-SQl请求,我经常使用它,并且我想获得与Entity Framework相同的请求。但是我不知道如何用EF进行“ CASE
WHEN”语句。这是我的请求的简化代码:

SELECT Code,
SUM(CASE WHEN Month=1 THEN Days Else 0 END) AS Jan,
FROM MyTable 
GROUP BY Code

您能告诉我是否有可能以及如何使用EF做到这一点?


阅读 187

收藏
2021-03-10

共1个答案

一尘不染

在这种情况下,我想说条件运算符p ? x : y)是一个很好的替代品。

// context.MyTable is an IQueryable<MyTable>
var query = from t in context.MyTable
            group t by t.Code into grp
            select
            new {
                Code = grp.Key,
                Jan = grp.Sum(x => x.Month == 1 ? x.Days : 0),
            };

或将aWhere和a组合Sum

                Jan = grp.Where(x => x.Month == 1).Sum(x => x.Days),

我不知道这些SQL到底能翻译成什么SQL,但是它们都应该具有相同的结果。

2021-03-10