【问题标题】:c# get list of users that have a specific foreign keyc# 获取具有特定外键的用户列表
【发布时间】:2017-11-15 14:26:33
【问题描述】:

我在用户和角色之间有多对多的关系,因为一个用户可以有很多角色,一个角色可以与很多用户相关联。

作为角色头衔,我有 guest (id 1) 和 normalUser(id 2)

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

这是我目前的代码

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

这给了我一个错误,指出我无法从“int”转换为“Common.Role”。

我应该如何解决这个问题?

【问题讨论】:

    标签: c# linq where


    【解决方案1】:

    从给定的部分数据我会尝试

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

    你的陈述中有两个问题:

    1. 您只是将 .ToList() 语句的右括号放在了错误的位置,从而实现了错误的集合。
    2. .Contains() 不是这样工作的。相反,您必须使用.Any()

    【讨论】:

    • 解释他做错了什么,以便他理解自己的错误。
    【解决方案2】:

    两件事:您需要访问 Roles 的 Id(大概)属性才能使您的过滤器工作,并且您的 .ToList() 位置错误。

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

    【讨论】:

    • @jAC,感谢您的更正,我已修复它。我最初在错误的位置将 ToList 归零,并没有发现他们没有使用属性访问器。
    猜你喜欢
    • 2011-07-17
    • 2014-08-08
    • 2011-12-21
    • 2019-03-21
    • 2014-08-31
    • 1970-01-01
    • 2012-07-06
    • 2015-10-21
    • 1970-01-01
    相关资源
    最近更新 更多