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));
使用 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));