【发布时间】:2021-09-22 13:50:45
【问题描述】:
我在 lambda 查询中写这个 sql 查询有问题:
select c.Id, c.Name, c.SomeNumber, count(*) from TableA a
inner join TableB b
on a.Id = b.aId
inner join TableC c
on c.BId = b.Id
where b.Status = N'Approved'
and c.Scope = N'Scope1'
group by a.Id, a.Name, a.SomeNumber
你们能帮我解决这个问题吗?我想编写 lambda 查询以在代码中执行此操作。我正在使用 EF Core 3.1
这是我到目前为止的结果:
var query = await _dbContext.TableA.Where(a => a.TableB.Any(b => b.Status.Equals("Approved")
&& b.TableC.Any(c => c.Scope.Equals("Scope1"))))
.GroupBy(g => new { Id = g.Id, Name = g.Name, SomeNumber = g.SomeNumber })
.Select(s => new { Id = s.Key.Id, Name = s.Key.Name, SomeNumber = s.Key.SomeNumber, Count = s.Count() })
.GroupBy(g => g.Id).Select(s => new {Id = s.Key, Count = s.Count()}).ToListAsync();
【问题讨论】:
-
你试过了吗?这条 SQL 没有什么特别复杂的地方。
-
是的,我试过了。我有一个问题,我无法使用 EF Core 在 count() 中获得相同的结果。哦,问题是我不想只使用 Join() 包含
-
显示您的尝试,我们将更正您的查询。
-
抱歉,我编辑了我的帖子。
-
你的数据模型有导航属性吗?
标签: c# .net linq lambda entity-framework-core