【问题标题】:How to convert SQL select Count with group by clauses into LINQ?如何将带有 group by 子句的 SQL select Count 转换为 LINQ?
【发布时间】:2013-01-01 09:39:01
【问题描述】:

如何将以下 SQL 查询转换为 LINQ?

SELECT [EmpUserName],[LeaveTypeName],Count([NoOfDays]) as 'Count'
FROM [NSL.LeaveSystem02].[dbo].[ProcessedCPLeaves]
GROUP BY [LeaveTypeName],[EmpUserName],[ProcessingDate]

请帮忙。

谢谢

【问题讨论】:

    标签: c# .net sql linq linq-to-sql


    【解决方案1】:

    下面是方法语法

     ProcessedCPLeaves
    .GroupBy(item => new { 
                     LeaveTypeName = item.LeaveTypeName,
                     EmpUserName = item.EmpUserName,
                     ProcessingDate = item.ProcessingDate
    }).Select (grouping => new {
                     EmpUserName =grouping.Key.EmpUserName,
                     LeaveTypeName = grouping.Key.LeaveTypeName,
                     TotalCount= grouping.Count()
    });
    

    【讨论】:

    • 是“TotalCount => grouping.Count()”还是“TotalCount = grouping.Count()”? :-/ 因为当你输入时它会出错
    • @CD1234,它是= 而不是=>
    【解决方案2】:

    试试看,

    from a in ProcessedCPLeaves
    group a by new 
        {
            LeaveTypeName = a.LeaveTypeName,
            EmpUserName = a.EmpUserName,
            ProcessingDate = a.ProcessingDate
        } into g
    select new
        {
            EmpUserName = g.Key.EmpUserName
            LeaveTypeName = g.Key.LeaveTypeName
            TotalCount = g.Count()
        }
    

    【讨论】:

    • group by new {a} by new 从未见过这种语法。错字还是我错过了什么? :)
    • 哦,是的! @JoachimIsaksson :D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 2016-01-21
    • 2011-01-28
    • 2021-10-08
    • 2017-09-09
    • 2022-01-17
    相关资源
    最近更新 更多