【问题标题】:C# How to update a List type variableC#如何更新列表类型变量
【发布时间】:2015-09-17 19:31:03
【问题描述】:

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

groups 包含所有 4 个组。

以下是我需要帮助的内容: 目前,如果用户处于角色 B 和 C,它只会显示 GroupTypeName 汽车,因为 GroupTypeName List 被覆盖。我如何以这样的方式对其进行编程,只保留添加/更新 groupsByMembersFirst 列表,这样它就不会覆盖它?帮助表示赞赏!

如果我不清楚,请告诉我!

【问题讨论】:

    标签: c# list ienumerable


    【解决方案1】:

    创建一个单独的列表来保存组,在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;
    

    【讨论】:

    • 我现在要试一试并发布结果!
    【解决方案2】:

    您应该考虑颠倒您的选择,从最不具体到最具体 ("Admin")。

    以列表开头并附加AddRange

    var validOptions = new List...
    
    if (IsUserInRole("N"))
    {
        validOptions.AddRange(...)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 1970-01-01
      • 2016-01-19
      • 1970-01-01
      • 2020-06-20
      • 2018-01-11
      • 2022-11-25
      相关资源
      最近更新 更多