使用总和和条件分组将SQL查询转换为linq / lambda表达式

时间:2019-05-11 07:12:53

标签: sql sql-server linq lambda

我下面有一个当前代码,用于从数据库视图中列出项目

var transTixList = await dbContext.vwTPACnxes.ToListAsync();

具有以下输出:

TransactionId   ForDate         OnHour      Totals
73289           2019-05-04      10          1
45318           2019-05-05      11          1
65261           2019-05-05      11          1
69131           2019-05-04      11          2
49696           2019-05-05      12          2
69373           2019-05-05      10          2
63965           2019-05-04      14          2
67963           2019-05-05      11          1
46774           2019-05-05      10          1
53125           2019-05-05      14          2

但是,我想对列表进行一些代码调整,并希望输出类似于下面的sql查询:

SELECT 
    SUM(Totals) AS Summary
    ,[ForDate]
    ,[OnHour]
FROM [somedb].[dbo].[vwTPACnx]
GROUP BY OnHour, ForDate

Summary ForDate     OnHour
1383    2019-05-05  11
1163    2019-05-04  12
1301    2019-05-05  12
 918    2019-05-04  13
 692    2019-05-05  13
 611    2019-05-04  14
 667    2019-05-05  14

哪种解决方案最好是修改现有代码以产生此类输出?

1 个答案:

答案 0 :(得分:0)

尝试一下:

var transTixList = dbContext.vwTPACnxes
                    .GroupBy (s => new {s.ForDate, s.OnHour} )
                    .Select (g => new 
                                     {
                                       ForDate = g.Key.ForDate,
                                       OnHour = g.Key.OnHour,
                                       Summary = g.Sum(x => x.Totals),
                                     } 
                             ).ToList();