首页 > 解决方案 > 有没有更好的方法在实体框架中执行这样的查询

问题描述

我有一个名为的模型User,每个用户都有一个名为Hobbies. 我想检索一个User具有特定 ID 的爱好的人,使用 Entity Framework 有什么比仅检索所有用户然后在每个用户的爱好列表中搜索并将其与爱好 id 匹配更好的方法,伪代码如下所示

UserList = select all users from db 
targetUser = null;

for User in UsersList:
    for Hobby in User.HobbiesList:
        if(Hobby.ID == currentHobby.ID)
        {
           targetUser = User;
        }

标签: entity-frameworkasp.net-core

解决方案


首先,EF 不会自动获取所有链接的实体,您需要明确显示Include您希望在最终结果中看到的所有内容。

至于问题,是的,当然,您可以在使用 EF 时使用所有标准的 LINQ 过滤器。在你的情况下

db.Userlist.Where(user => user.HobbiesList.Any(hobby => hobby.ID == currentHobby.ID))

Include(user => user.HobbiesList)如果您想在结果中看到它,请不要忘记。


推荐阅读