C#:一对多关系数据类型

时间:2012-08-30 19:27:40

标签: c# dictionary

对于一对一,我可以使用哈希或字典。例如,史密斯是26岁,布朗是35岁。这很清楚。一对多怎么样?例如,Smith参加class01,class08,class12,Brown参加class01,class05和class08。我有什么选择,什么是最佳选择?

6 个答案:

答案 0 :(得分:9)

您仍然可以使用Dictionary,但您需要将值类型设为集合,即:Dictionary<Person, IList<Class>>。这将允许您存储每个人的班级列表。

答案 1 :(得分:4)

您可以使用带有列表的词典作为第二种类型。

例如,如果您有Student类和Class类,那么您将拥有

Dictionary<Student, List<Class>>

答案 2 :(得分:1)

您可以使用Lookup<TKey, TValue>类型。它几乎像字典一样工作,但允许插入相等的键。阅读MSDN文章http://msdn.microsoft.com/en-us/library/bb460184.aspx中的更多内容。

答案 3 :(得分:1)

您可以使用列表作为其值的哈希或字典。例如:

var d = new Dictionary<string,List<string>> {
    { "Smith", new List<string> { "class01", "class08", "class12" } },
    { "Brown", new List<string> { "class01", "class05", "class08" } }
};

答案 4 :(得分:0)

您可以使用

Dictionary<string, List<object>> OneToManyDictionary;

答案 5 :(得分:0)

创建在Person类中定义的实体对象。在类上有属性来表示各种属性和集合。

For example (pseudo-code)
Person class
  Age Property (int)
  Class Property (List)
... etc.