我有很多用户,每个用户都可以属于多个角色。
我试图编写一些代码来获取属于某个区域并具有特定角色的用户。
我想出了:
_db.Users.Where(
x => x.Roles.Contains(n => n.Name == "Some Role Name")
&& x.AreaId == areaId);
但这不起作用。有谁知道我哪里出错了,我怎么解决它?
答案 0 :(得分:2)
您在=
中使用单个等号==
进行比较,而不是&& x.AreaId = areaId
。另一方面,在Any
中使用Contains
代替x.Roles.Contains(n => n.Name == "Some Role Name")
。
答案 1 :(得分:1)
Contains()
正在查找枚举中的匹配项,因此您必须将Role
实例传递给它 - 您希望传递带有条件的lambda,因此请使用Any()
:< / p>
_db.Users.Where(x => x.Roles.Any(n => n.Name == "Some Role Name")
&& x.AreaId == areaId);
答案 2 :(得分:1)
尝试:
_db.Users.Where(x => x.Roles.Any(n => n.Name == "Some Role Name")
&& x.AreaId == areaId);