首页 > 解决方案 > 查询组合

问题描述

我正在尝试使用 asp.net core c# 构建查询

https://www.reflectionit.nl/blog/2017/paging-in-asp-net-core-mvc-and-entityframework-core

我试图进行过滤,但是我需要另一个表中具有我唯一 ID 的数据

var result = _context.UserRoles.Where(y => y.RoleId.Contains(selectedRoles.Id)); // Retrieve the the userid i have from another table with the selected roleid

var query = _context.Users.Where(x => //I have already tried contains, where join );

如果有一个网站可以让我学习这个查询,请推荐。“Join()”在我进行分页时不起作用

标签: entity-framework.net-coreentity-framework-core

解决方案


至少两个解决方案(请注意,我不检查身份类成员,因此以下是解决方案的“精神”(您错过了选择子句)):

var result = _context.UserRoles.
    Where(y => selectedRoles.Contains(y.RoleId)).
    Select(y => y.User);

或者

var result = _context.UserRoles.
     Where(y => selectedRoles.Contains(y.RoleId)).
     Select(y => y.UserId); 
query = _context.Users.
    Where(x => result.Contains(x.Id)); 

也就是说,假设UserRolesIdentity (v2) 中没有公开表,您可能想要:

userManager.Users.
    Where(u => u.Roles.Any(r => selectecRoles.Contains(r.RoleId)));

由您来实例化 userManager。


推荐阅读