![](/img/trans.png)
[英]How to perform subquery,group by and aggregate together using lambda or LINQ in C#
[英]Replicating nested group query (subquery) using Lambda in C# / DOTNET Core
最近我将我的一些 Dapper 查询迁移到 EF Core / Lambda 查询。 我正在努力获得嵌套分组结果。
在阅读了几篇关于分组的帖子后,我似乎无法得到想要的结果。 可悲的是,所有的例子都在 LINQ 中,我用它做的很少,所以我试图用 LAMBDA 得到结果。
那么我将如何在 LAMBDA 中编写以下 SQL 查询:
SELECT
sub.ClientId,
sub.ClientName,
ProjectCount = COUNT(sub.ProjectId)
FROM
(
SELECT mt.ClientId, mt.ClientName, mt.ProjectId
FROM MyTable mt
WHERE mt.AccountId = 'XXXX'
GROUP BY mt.ClientId, mt.ClientName, mt.ProjectId
)sub
GROUP BY
sub.ClientId,
sub.ClientName
找到了一种获得所需结果的方法,尽管我不确定这是“最好”的方法。
var clients = await _dbContext.MyTable
.Where(c => c.AccountId == accountId)
.GroupBy(c => new { c.ClientId, c.ClientName })
.Select(g => new
{
ClientId = g.Key.ClientId,
ClientName = g.Key.ClientName,
ProjectCount = g.Where(l => l.ClientId == g.Key.ClientId).Select(p => p.ProjectId).Distinct().Count()
}).ToListAsync();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.