C# 我正在尝试获得所有员工职位(多对多关系)

C# 我正在尝试获得所有员工职位(多对多关系),c#,asp.net-core,entity-framework-core,C#,Asp.net Core,Entity Framework Core,我是初学者。我尝试获取该员工的所有职位,但只返回第一个员工的职位。员工和职位的关系是多对多的。无论你做什么,结果都是一样的:( 视图模型 public class DivisionEmployeeViewModel { public DivisionEmployee DivisionEmployees { get; set; } public Division Division { get; set; } public IEnumerable<DivisionEm

我是初学者。我尝试获取该员工的所有职位,但只返回第一个员工的职位。员工和职位的关系是多对多的。无论你做什么,结果都是一样的:(

视图模型

public class DivisionEmployeeViewModel
{
    public DivisionEmployee DivisionEmployees { get; set; }
    public Division Division { get; set; }

    public IEnumerable<DivisionEmployee> DivisionEmployeeList { get; set; }
    public IEnumerable<EmployeePosition> EmployeePositionList { get; set; } // get 1 obj

    public IEnumerable<SelectListItem> DivisionEmployeeListDropDown { get; set; }
}
公共类部门员工视图模型
{
公共部门员工部门员工{get;set;}
公除法除法{get;set;}
公共IEnumerable DivisionEmployeeList{get;set;}
public IEnumerable EmployeePositionList{get;set;}//get 1对象
公共IEnumerable DivisionEmployeeListDropDown{get;set;}
}
行动细节

[HttpGet]
    public async Task<IActionResult> Details(int id)
    {
        var model = new DivisionEmployeeViewModel
        {
            DivisionEmployeeList = await _db.DivisionEmployeesModel.Include(x => x.Employee)
            .Include(x => x.Division).Where(x => x.Division_Id == id).ToListAsync(),

            // Get only 1 obj
            EmployeePositionList = await _db.EmployeePositions.Include(x => x.Position)
            .Include(x => x.Employee).Where(x => x.Employee_Id == id).ToListAsync(),
            //

            DivisionEmployees = new DivisionEmployee()
            {
                Division_Id = id
            },

            Division = await _db.Divisions.FirstOrDefaultAsync(x => x.Id == id)
        };

        List<int> tempAssignedList = model.DivisionEmployeeList.Select(x => x.Employee_Id).ToList();
        List<int> tempAssignedList2 = model.EmployeePositionList.Select(x => x.Position_Id).ToList(); // ? Get only 1 obj

        // Get all items who's Id isn't in tempAuthorsAssignedList and tempCitiesAssignedList
        var tempList = await _db.Employees.Where(x => !tempAssignedList.Contains(x.Id)).Where(x => !tempAssignedList2.Contains(x.Id)).ToListAsync();

        model.DivisionEmployeeListDropDown = tempList.Select(x => new SelectListItem
        {
            Text = x.FullName,
            Value = x.Id.ToString()
        });

        return View(model);
    }
[HttpGet]
公共异步任务详细信息(int-id)
{
var模型=新部门员工视图模型
{
部门员工列表=等待_db.DivisionEmployeesModel.Include(x=>x.Employee)
.Include(x=>x.Division)。其中(x=>x.Division_Id==Id)。ToListSync(),
//只得到一个obj
EmployeePositionList=等待_db.EmployeePositions.Include(x=>x.Position)
.Include(x=>x.Employee)。其中(x=>x.Employee_Id==Id)。ToListSync(),
//
部门员工=新部门员工()
{
分区Id=Id
},
Division=await\u db.Divisions.FirstOrDefaultAsync(x=>x.Id==Id)
};
List tempAssignedList=model.DivisionEmployeeList.Select(x=>x.Employee_Id).ToList();
List tempAssignedList2=model.EmployeePositionList.Select(x=>x.Position_Id).ToList();/?仅获取1个对象
//获取Id不在tempAuthorsAssignedList和tempCitiesAssignedList中的所有项目
var templast=await_db.Employees.Where(x=>!tempAssignedList.Contains(x.Id)).Where(x=>!tempAssignedList2.Contains(x.Id)).toListSync();
model.DivisionEmployeeListDropDown=模板列表.Select(x=>new SelectListItem
{
Text=x.FullName,
值=x.Id.ToString()
});
返回视图(模型);
}

Project GitHub

您的部门Id和员工Id都是详细的Id(int Id)?,tempAssignedList2是一个职位Id列表,说明您为什么使用。其中(x=>!tempAssignedList2.Contains(x.Id))要将employeeId与positionId进行比较?–Yiyi You

您的
部门Id
员工Id
都是
详细信息(int Id)
中的Id;
临时分配列表2
是职位Id列表,为什么使用
。其中(x=>!临时分配列表2.Contains(x.Id))
要比较employeeId和positionId吗?我的师傅,这是我的错。现在一切正常;)太多了!