gpt4 book ai didi

c# - Lambda 表达式不正确

转载 作者:行者123 更新时间:2023-11-30 13:17:41 25 4
gpt4 key购买 nike

我从一个我认为我构造正确的查询中得到了奇怪的结果。

此查询返回 2 个值,这是正确的:

int userId = GetUserId(); //Not exactly like this; simplified
var context = new Entities();
//Get the roles
var relations = (from q in context.UserHasRole
where q.UserId == userId
select q).ToList();
List<Roles> roles = new List<Roles>();
foreach (var item in relations)
{
Roles role = (from r in context.Roles
where r.Id == item.RoleId
select r).SingleOrDefault();
roles.Add(role);
}
return roles;

然而,这个查询返回 4 个值,这是非常不正确的,因为数据库中没有 4 个关系!它返回所有可能的角色。对我来说,查询看起来应该只返回关系同时具有正确 userId 和 roleId 的记录。

            //Get the roles 
var roles = (from q in context.Roles
where context.UserHasRole.Any(o => o.UserId == userId)
&& context.UserHasRole.Any(p => p.RoleId == q.Id)
select q).ToList();

return roles;

我应该如何构建 lambda 查询?

最佳答案

我以前没有这样做过,但我猜你应该这样做:

 //Get the roles 
var roles = (from q in context.Roles
where context.UserHasRole.Any(o => o.UserId == userId && o.RoleId == q.Id)
select q).ToList();

return roles;

关于c# - Lambda 表达式不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6920094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com