c# - C#如何更新列表类型变量

标签 c# list ienumerable

场景:在我的业务层中,我有一个名为“ 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/

相关文章:

python - 按索引号向列 pandas 数据框添加值

c# - 如何获取 NameValueSectionHandler 类型的 ConfigurationSection 的值

c# - javascript和C#服务器通信

c# - 是否有快速且可扩展的解决方案来保存数据?

python - 为什么 python 中的列表操作在函数范围之外运行?

c# - 二叉搜索树 IEnumerator.MoveNext() 非递归中序遍历实现。如何?

c# - 设计简单的代码优先电影数据库(多对多)EF

python - 在 Python 中重新排序列表以确保它以检查值开头

c# - 在 List<T> 和 IEnumerable<T> 之间自由转换

c# - 如何创建无法进行多个枚举的 IEnumerable<T> ?