c#获取具有特定外键的用户列表

时间:2017-11-15 14:26:33

标签: c# linq where

我在用户和角色之间存在多对多的关系,因为用户可以拥有多个角色,并且角色可以与许多用户相关联。

作为角色标题我有来宾(id 1)和normalUser(id 2)

我正在尝试获取数据库中存在的所有normalUser,但我不想要访客,因为我必须根据需要设置权限

到目前为止这是我的代码

    public List<User> GetnormalUsers()
    {
        return Entity.Users.Where(x => x.Roles.Contains(2).ToList());
    }

这给了我一个错误,指出我无法转换为&#39; int&#39; to&#39; Common.Role&#39;。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:7)

根据给定的部分数据,我会尝试

return Entity.Users.Where(user => user.Roles.Any(role => role.Id == 2)).ToList();

声明中的两个问题:

  1. 您只是在错误的位置上使用.ToList()语句的结束括号,实现了错误的集合。
  2. .Contains()不会这样做。相反,您必须使用.Any()

答案 1 :(得分:3)

两件事:您需要访问角色的Id(可能)属性才能使您的过滤器正常工作,并且.ToList()处于错误的位置。

public List<User> GetnormalUsers()
{
        return Entity.Users.Where(x => x.Roles.Any(y => y.Id == 2)).ToList();
}