LINQ实体框架中的多个分组依据和计数

guz6ccqo  于 2023-05-04  发布在  其他
关注(0)|答案(1)|浏览(176)

我在这里面临一个简单的问题,因为我是新的LINQ,我真的需要有人帮助。
我有一个SQL查询,根据Client IDCommissionNameDate仅从DateTime计算金额。
下面是SQL查询:

SELECT 
    ClientId, CommisionName,
    CAST(Date AS DATE) DateOnly, 
    SUM(Amount)
FROM 
    [MyDB].[dbo].[Commission] 
GROUP BY
    ClientId, CAST(Date AS DATE), CommisionName

我在LINQ中得到的分组是:

var data = from c in await _context.Commission.ToListAsync() 
           group c by new
                   {
                       c.CommisionName,
                       c.ClientId,
                       c.Date,
                   } into gcs
           select new
                   {
                       ClientId = gcs.Key.ClientId,
                       CommissionName = gcs.Key.CommisionName,
                       Date = gcs.Key.Date,
                   };

但是如果我需要总结Amount,我仍然没有参考资料。
请我需要有人参考。谢谢你

7lrncoxx

7lrncoxx1#

gcs.Sum(x => x.Amount)来执行Amount的求和。
请注意,您当前的查询将查询所有记录,并在内存端执行分组。
要在数据库端使用组执行查询,LINQ查询应如下:

var data = await (from c in _context.Commission 
                   group c by new
                   {
                       c.CommisionName,
                       c.ClientId,
                       c.Date.Date,
                   } into gcs
                   select new
                   {
                       ClientId = gcs.Key.ClientId,
                       CommissionName = gcs.Key.CommisionName,
                       Date = gcs.Key.Date,
                       Amount = gcs.Sum(x => x.Amount)
                   }
                   ).ToListAsync();

相关问题