繁体   English   中英

在 C# / DOTNET Core 中使用 Lambda 复制嵌套组查询(子查询)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM