4

对于一对一,我可以使用哈希或字典。例如,史密斯 26 岁,布朗 35 岁。这很清楚。一对多呢?例如,Smith 正在上 class01、class08、class12,而 Brown 正在上 class01、class05 和 class08。我的选择是什么,最好的选择是什么?

4

6 回答 6

9

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

于 2012-08-30T19:29:10.840 回答
4

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

例如,如果您有一个 Student 类和一个 Class 类,您将有一个

Dictionary<Student, List<Class>>
于 2012-08-30T19:29:04.470 回答
1

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

于 2012-08-30T19:29:47.577 回答
1

您可以使用列表作为其值的散列或字典。例子:

var d = new Dictionary<string,List<string>> {
    { "Smith", new List<string> { "class01", "class08", "class12" } },
    { "Brown", new List<string> { "class01", "class05", "class08" } }
};
于 2012-08-30T19:30:08.277 回答
0

您可以使用

Dictionary<string, List<object>> OneToManyDictionary;
于 2012-08-30T19:31:03.500 回答
0

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

For example (pseudo-code)
Person class
  Age Property (int)
  Class Property (List)
... etc.
于 2012-08-30T19:33:42.740 回答