C#如何更新一个List类型的变量
C# How to update a List type variable
场景: 在我的业务层中,我有一个名为 "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 列表被覆盖。我如何以只保留 add/update groupsByMembersFirst 列表的方式对其进行编程,这样它就不会覆盖它?帮助赞赏!
如果我不清楚请告诉我!
您应该考虑倒置您的选项,从最不具体到最具体 ("Admin"
)。
以列表开头并附加 AddRange
。
var validOptions = new List...
if (IsUserInRole("N"))
{
validOptions.AddRange(...)
}
创建一个包含组的单独列表,在 if()
中将项目添加到该列表,然后 return:
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;
场景: 在我的业务层中,我有一个名为 "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 列表被覆盖。我如何以只保留 add/update groupsByMembersFirst 列表的方式对其进行编程,这样它就不会覆盖它?帮助赞赏!
如果我不清楚请告诉我!
您应该考虑倒置您的选项,从最不具体到最具体 ("Admin"
)。
以列表开头并附加 AddRange
。
var validOptions = new List...
if (IsUserInRole("N"))
{
validOptions.AddRange(...)
}
创建一个包含组的单独列表,在 if()
中将项目添加到该列表,然后 return:
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;