c#如何更新List类型变量
本文关键字:List 类型变量 更新 何更新 | 更新日期: 2023-09-27 18:13:24
场景:在我的业务层中,我有这个名为"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 cars,因为GroupTypeName List被覆盖了。我如何编程它在这样的方式,我只是保持添加/更新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;
您应该考虑反向选择,从最不具体到最具体("Admin"
)。
以列表开头,以AddRange
结尾
var validOptions = new List...
if (IsUserInRole("N"))
{
validOptions.AddRange(...)
}