使用 case 语句从 SQL 服务器查询到 Linq 查询 c#

Query with case statement from SQL Server to Linq query c#

我在 sql 服务器

中有以下查询
    select COUNT(mc_owner) as nbr ,
    case mc_owner when 'Element1' then 'Element1' else 'others' end Owner 
    from [dbo].[full] 
    where (date_reception > '01-01-2015')
    group by (CASE mc_owner WHEN 'Element1' THEN 'Element1' ELSE 'others' END)
    order by nbr desc

我需要将其转换为 entityframework linq 查询

试试这个,

var result = fulltableData.Where(x=>x.date_reception > '01-01-2015')
            .GroupBy(x=> x.mc_owner.Equals("Element1")?"Element1":"others")
            .Select(x=> new{ nbr = x.Count(), Owner = x.Key})
            .OrderByDescending(x=>x.nbr);

我知道您想 select 与所有其他人相比,某个 mc_owner 的出现次数。以下 LINQ 查询应产生相同的结果:

full.Where(f => f.date_reception > new DateTime(2015, 1, 1))
  .GroupBy(f => f.mc_owner == "Element1" ? f.mc_owner : "others")
  .OrderByDescending(group => group.Count())
  .Select(group => new { Owner = group.key, nbr = group.Count());