Linq select parent/parents 记录具有匹配的子项

Linq select parent/parents record with matching child items

使用 ef core 并尝试 select 根据子项中的条件设置父项。

如果我在 sql 这样做,我会

    declare @UserName nvarchar(200)
set @UserName = 'al65272'

declare @ClientId int
set @ClientId = 32

select u.*
from Users u 
inner join ClientUsers cu on u.Id = cu.UserId
where NormalizedUserName = upper(@UserName) and cu.ClientId=@ClientId

我以为我可以做这样的事情:

var userByUserName = _applicationDbContext.Users.FirstOrDefault(x =>
                x.NormalizedUserName == userName.ToUpper() &&
                x.ClientUsers.Contains(new ClientUser {ClientId = client.Id, User = x}));

但显然是错误的,因为 return 什么都没有。

谁能指出我正确的方向?

我认为这对你有用:

var userByUserName = _applicationDbContext.Users.FirstOrDefault(x =>
                x.NormalizedUserName == userName.ToUpper() &&
                x.ClientUsers.Any(c => c.ClientId == client.Id));