转换sql查询包含的情况然后到实体框架工作查询

时间:2018-02-07 13:55:57

标签: sql sql-server entity-framework

我需要在我的项目中使用实体框架进行以下查询..这是来自sql server的查询

select sum(case when beef_dairy_stat = 1 and param_id = 1 then 1 else 0 end) as ctn
from user_behave_fact 
group by (year(fact_date))
go

这就是我试过的:\

fee_ctn = db.user_behave_fact.Sum(x=> x.beef_dairy_stat == true && x.param_id == 16 ? 1 : 0).GroupBy(y => y.fact_date.Value.Year).Select(y => y.Count()).ToList();
我不熟悉linq查询....上面的sql server查询给了我

eg: 0    //count for year 2017
    15   //count for year 2018

以及为什么我在我的sql查询中需要这种情况=> query to select count of records for each year

1 个答案:

答案 0 :(得分:0)

您需要在EF中撤消GroupBySum。您也可以直接在Count内使用条件:

fee_ctn = db.user_behave_fact
    .GroupBy(y => y.fact_date.Value.Year)
    .Select(y => y.Count(x=> x.beef_dairy_stat == true && x.param_id == 16))
    .ToList();