【问题标题】:Query with case statement from SQL Server to Linq query c# [closed]使用从 SQL Server 到 Linq 查询 c# 的 case 语句进行查询 [关闭]
【发布时间】:2015-05-06 21:07:21
【问题描述】:

我在 sql server 中有以下查询

    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 查询

【问题讨论】:

标签: c# sql-server asp.net-mvc linq entity-framework


【解决方案1】:

试试这个,

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

【讨论】:

  • 成功了,谢谢
  • 很高兴它成功了。快乐的编码。
  • 部分 Owner = x.Key.Equals("Element1")?"Element1":"others"} 是不必要的,因为键已经具有值“Element1”或“others”。应该是 Owner = x.Key。
  • @ThomasF。感谢您指出这一点。
【解决方案2】:

我了解您想选择某个 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());

【讨论】:

  • 感谢您的帮助:D
猜你喜欢
  • 2011-02-14
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
  • 2017-03-10
  • 1970-01-01
  • 2021-07-17
相关资源
最近更新 更多