代码之家  ›  专栏  ›  技术社区  ›  Dabblernl

存储用户组的集合是什么?

  •  0
  • Dabblernl  · 技术社区  · 16 年前

    我想创建一个存储用户组的集合。用户可以是多个组的成员,组可以嵌套,组的选择应返回一个不同的IEnumerable <user &。

    当然,我可以用标准列表从头开始写这个 <T >,字典< T, u>等集合,但是否有一个内置集合已经公开了许多这种行为?

    谢谢!

    4 回复  |  直到 16 年前
        1
  •  2
  •   Andrew Hare    16 年前

    我会这样做:

    using System;
    using System.Collections.Generic;
    
    class Program
    {
        static void Main()
        {
            List<User> users = new List<User>
            {
                // use a List<T> to hold the users themselves
            };
        }
    }
    
    class Group
    {
        public Group NestedGroup { get; set; }
    }
    
    class User
    {
        // Store the groups in a HashSet<T> to keep
        // a distinct list.
        HashSet<Group> groups;
    
        public IEnumerable<Group> Groups
        {
            get { return groups; }
        }
    }
    

    使用A List<T> 持有用户自己应该是好的。注意到 Groups 性质 User 类型暴露为 IEnumerable<Group> 但在内部作为 HashSet<Group> 允许您根据需要保留一个不同的列表。

        2
  •  0
  •   Dan Diplo    16 年前

    我想是个普通人 List<T> 可以(其中t是保存用户的类)。

        3
  •  0
  •   Reed Copsey    16 年前

    我想用 List<T> 可以保存这些信息。您可以拥有具有父组和子组列表的组,并且每个组包含成员列表或类似内容。

    在获得 IEnumerable<User> 退后-应该可以使用 Enumerable.SelectMany .看看那里的msdn样本——它们与宠物和主人有类似的事情,其中有多个元素跨越多个集合。

        4
  •  0
  •   Chris Brandsma    16 年前

    看起来您需要一个好的旧关系数据库。加入sqlite,如果可以的话就走。

    否则……我有时会通过多个字典和列表来完成这项工作。你有一个组字典,每个组都是一个列表。然后用另一本字典按某种键存储用户。每个用户都可以以这种方式存在于多个组中。