我有一个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做到这一点?
在这种情况下,我想说条件运算符(p ? x : y)是一个很好的替代品。
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:
Where
Sum
Jan = grp.Where(x => x.Month == 1).Sum(x => x.Days),
我不知道这些SQL到底能翻译成什么SQL,但是它们都应该具有相同的结果。