c# - 加入未按预期工作(实体框架)
问题描述
我一生无法弄清楚如何使用实体框架在 UserName 上加入这两个表。
我尝试了语句和方法,但都没有奏效。
这些表肯定有相同的用户
var employees = _context.Employees.Include(e => e.Loc);
//Only show employees with a user role of manager
var managerUsers = await _userManager.GetUsersInRoleAsync("Manager");
var match = (from e in employees
join m in managerUsers on e.UserName equals m.UserName
select new { Employee = e }).ToList();
因此,简短的代码分解我从数据库上下文中获得了所有员工的列表。我查看用户角色以查找具有 Manager 角色的用户列表。员工也有一个用户名字段,我尝试使用用户名字段加入他们。当前在两个表中都有一位经理正确返回了匹配的用户名,但在此代码之后,匹配有 0 个结果。
我也试过这样:
employees.Join(managerUsers,
e => e.UserName,
m => m.UserName,
(e,m) => new { e }).ToList();
但这也不会返回任何记录。我究竟做错了什么?
解决方案
自己想出了一个解决方案
var managerEmployees = new List<Employee>();
for(int a = 0; a< selectManagersList.Count(); a++)
{
var found = await _context.Employees.FirstOrDefaultAsync(u=> u.UserName == managerUsers.ElementAt(a).UserName);
if (found!=null)
{
managerEmployees.Add(found);
}
}
推荐阅读
- c# - 从 xml 文件填充 Datagrid
- java - Random.nextBytes(byte[]) 在java中的行为
- google-sheets-api - 谷歌表:以正确的格式获取日期
- jquery - 在 MVC 中获取视图中的表数据、发送表数据或在控制器上检索表数据
- c# - Xamarin 应用程序部署 - 应用程序包 (apk) 中是否包含所有依赖项?
- ios - 通过单击子视图中的按钮更改 UIView 显示
- rabbitmq - Pentaho - 如何将作业作为流运行
- jq - slurp 选项的 jq 等效项是什么?
- mysql - 规范化 MySQL 数据库未更新
- javascript - 根据选定的嵌套复选框生成 JSON