【问题标题】:Add ICollection list of User to Existing Roles List in C#将用户的 ICollection 列表添加到 C# 中的现有角色列表
【发布时间】:2017-07-28 14:42:01
【问题描述】:

我有 User 和 Role 类,每个类都有 List 定义。现在我想将用户列表添加到特定角色,换句话说,我想将用户引用列表放入 ICollection 角色中。

用户

 public class User
{
    public int UserID { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public  bool ActiveStatus { get; set; }

     public List<User> Users = new List<User>();

  public List<User> BuildUserRepository()
    {
        Users.Add(new User { UserID = 01, Name = "Khurram", Address = "London", ActiveStatus = true });
        Users.Add(new User { UserID = 02, Name = "Sana", Address = "London", ActiveStatus = true });
        Users.Add(new User { UserID = 03, Name = "Richard", Address = "London", ActiveStatus = false });
        Users.Add(new User { UserID = 04, Name = "Tracy", Address = "London", ActiveStatus = true });
        Users.Add(new User { UserID = 05, Name = "Laura", Address = "Manchester", ActiveStatus = true });
        Users.Add(new User { UserID = 06, Name = "James", Address = "London", ActiveStatus = false });

        return Users;
    }
}

角色

public class Role
{
    public int RoleID { get; set; }
    public string RoleTitle { get; set; }
    public ICollection<User> UsersInRole { get; set; }

    public List<Role> Roles = new List<Role>();

    public void BuildRoleRepository()
    {
        Roles.Add(new Role { RoleID = 01, RoleTitle = "Admin" });
        Roles.Add(new Role { RoleID = 02, RoleTitle = "Management" });
        Roles.Add(new Role { RoleID = 03, RoleTitle = "User" });
    }
 }

现在我想将 UserID 01 和 02 的两个用户添加到 Role ICollection where RoleID = 01,我该怎么做

【问题讨论】:

  • 我不知道这是否是您的问题,但根据您发布的代码,User 的每个实例都有自己的用户列表,Role 的每个实例都有自己的角色列表。这可能不是你想要的。您可能希望创建一个具有全局用户和角色列表的单独类。

标签: c# .net-core icollection


【解决方案1】:

无需对解决方案的设计进行一些重大更改,您可以通过以下代码 sn-p 来完成它。但请记住,hard coding 类中的实际/测试数据通常会进一步引入许多限制,并且通常被认为是反模式。使用外部数据存储(文件或数据库)和Repository Pattern 作为持久层可能会更好。希望对您有所帮助!

Role.Roles.First(x => x.RoleID == 01)
    .UsersInRole.AddRange(
        User.Users.Where(x => x.UserID == 01 || x.UserID == 02));

public class User
{
    public int UserID { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public bool ActiveStatus { get; set; }

    public static List<User> Users = new List<User>
    {
        new User {UserID = 01, Name = "Khurram", Address = "London", ActiveStatus = true},
        new User {UserID = 02, Name = "Sana", Address = "London", ActiveStatus = true},
        new User {UserID = 03, Name = "Richard", Address = "London", ActiveStatus = false},
        new User {UserID = 04, Name = "Tracy", Address = "London", ActiveStatus = true},
        new User {UserID = 05, Name = "Laura", Address = "Manchester", ActiveStatus = true},
        new User {UserID = 06, Name = "James", Address = "London", ActiveStatus = false}
    };
}

public class Role
{
    public int RoleID { get; set; }
    public string RoleTitle { get; set; }
    public List<User> UsersInRole { get; set; }

    public static List<Role> Roles = new List<Role>
    {
        new Role {RoleID = 01, RoleTitle = "Admin"},
        new Role {RoleID = 02, RoleTitle = "Management"},
        new Role {RoleID = 03, RoleTitle = "User"}
    };
}

【讨论】:

  • 我很清楚,这仅用于测试目的。我通常使用带有存储库模式的数据库库
猜你喜欢
  • 2022-11-27
  • 2018-09-25
  • 2019-01-17
  • 1970-01-01
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-31
相关资源
最近更新 更多