如何让用户匹配角色

时间:2011-11-17 21:42:01

标签: linq

我有很多用户,每个用户都可以属于多个角色。

我试图编写一些代码来获取属于某个区域并具有特定角色的用户。

我想出了:

_db.Users.Where(
    x => x.Roles.Contains(n => n.Name == "Some Role Name")
    && x.AreaId == areaId);

但这不起作用。有谁知道我哪里出错了,我怎么解决它?

3 个答案:

答案 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);