联接无法按预期工作(实体框架)

时间:2019-01-14 11:35:49

标签: c# linq entity-framework-core identity

我一辈子都想不通如何使用实体框架在UserName上连接这两个表。

我尝试了语句和方法,但都没有用。

表中肯定有相同的用户

           if (dogName.matches("^\\s*$") || dogName.isEmpty()) {
                System.out.println("Error: Name can't be empty.");
                continue;
            }

因此,简短的代码细分可以从数据库上下文中获取所有雇员的列表。我在用户角色中查找具有Manager角色的用户列表。员工也有一个“用户名”字段,我尝试使用“用户名”字段加入他们。当前,两个表中都有一位经理正确返回了具有匹配用户名的经理,但是在此代码之后,match有0个结果。

我也这样尝试过:

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();

但这也不会返回任何记录。我在做什么错了?

1 个答案:

答案 0 :(得分:0)

自己找出解决方案

        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);
            }
        }