如何检查列表中的值是否不在另一个IList中
本文关键字:是否 IList 另一个 检查 列表 何检查 | 更新日期: 2023-09-27 18:25:28
我希望能够通过MVC中的复选框列表编辑员工角色。
- 如果他们已经有了这个角色,就什么都不要做
- 如果他们还没有该角色,请添加该角色
- 如果他们已经拥有该角色,但该角色已被取消选择,请将其删除
我搞不懂第三个的逻辑。我有一个现有角色的IList,以及一个设置为true的角色列表。
for (int i = 0; i < selectedRoles.Count(); i++)
{
var employeeRole = new EmployeeRole
{
EmployeeID = vm.EmployeeID,
RoleID= Int32.Parse(postedRoleIds[i])
};
if (vm.ExistingRoles.Contains(selectedRoles[i]))
{
}
else
{
db.EmployeeRoles.Add(employeeRole);
}
}
有人能为我指出IF语句的正确方向,以检查我是否需要删除数据库中的角色吗?
谢谢!
为了简单起见,最好的方法是获得两个单独的列表-
要添加的角色,要删除的角色。所以逻辑应该是
IList<Role> rolesToBeAdded = new List<Role>();
IList<Role> rolesToBeDeleted = new List<Role>();
foreach(Role role in existingRoles)
{
if(! selectedRoles.contains(role))
rolesToBeDeleted.Add(role);
}
foreach(Role role in selectedRoles)
{
if(! existingRoles.contains(role))
rolesToBeAdded.Add(role);
}
在此之后,从角色中添加角色ToBeAdded和从角色中删除角色ToBeDeleted。
如果您在企业级解决方案中执行此操作,您可能希望避免直接在视图模型等之外执行操作。您可能希望提取现有和新选择的角色的列表,将它们传递给处理其周围业务逻辑的业务逻辑dll。将所有这些放在控制器和视图逻辑中会在以后维护时对您造成伤害。