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吗?我的师傅,这是我的错。现在一切正常;)太多了!