场景:在我的业务层中,我有一个名为“ groups”的变量,它是4个不同组的列表。业务要求是以这样的方式显示组,以便您仅查看分配给您的组。棘手的部分是一个人可能属于多个组。我有以下适用于AppAdmin的逻辑,因为他们能够查看所有组。
if (IsUserInRole("Admin"))
{
groupsByMembersFirst = groupsByMembersFirst;
}
if (IsUserInRole("B"))
{
groupsByMembersFirst = groupsByMembersFirst.Where(g => g.GroupTypeName != "Bikes")
.ToList();
}
if (IsUserInRole("C"))
{
groupsByMembersFirst = groupsByMembersFirst.Where(g => g.GroupTypeName != "Cars")
.ToList();
}
if (IsUserInRole("N"))
{
groupsByMembersFirst = groupsByMembersFirst.Where(g => g.GroupTypeName != "NanoCars")
.ToList();
}
return groupsByMembersFirst;
组包含所有4个组。
这是我需要帮助的:
当前,如果用户具有角色B和C,则它将仅显示GroupTypeName汽车,因为GroupTypeName列表已被覆盖。我该如何编程,使其保持添加/更新groupsByMembersFirst列表,从而不会覆盖它?帮助赞赏!
如果我不清楚,请告诉我!
最佳答案
做一个单独的列表来容纳组,在if()
中添加项目到该列表,然后返回:
var returnVal = new List<Group>();
if (IsUserInRole("Admin"))
{
returnVal.AddRange(groupsByMembersFirst);
}
if (IsUserInRole("B"))
{
returnVal.AddRange(groupsByMembersFirst.Where(g => g.GroupTypeName != "Bikes"));
}
if (IsUserInRole("C"))
{
returnVal.AddRange(groupsByMembersFirst.Where(g => g.GroupTypeName != "Cars"));
}
if (IsUserInRole("N"))
{
returnVal.AddRange(groupsByMembersFirst.Where(g => g.GroupTypeName != "NanoCars"));
}
return returnVal;
关于c# - C#如何更新列表类型变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32638540/