团体收集

时间:2014-06-06 17:25:33

标签: c# .net .net-4.5

是否有适合群组的收藏类型?或者是List<IGrouping<Key, ItemType>>的唯一选择?

基本上,我想要对列表进行字典类型的操作,例如GroupList.ContainsKey(key)GroupList.TryGetItems(key, out items),以及一些与组相关的内容,例如GroupList.AddToGroup(key, Item)

是的,我知道我可以自己编写这些扩展方法,但如果组中已有某些内容,我不想重新发明轮子。

如果没有,那么我将“自己动手”。

2 个答案:

答案 0 :(得分:1)

尝试使用KeyValuePairhttp://msdn.microsoft.com/en-us/library/5tbh8a42(v=vs.110).aspx他们非常通用,使与KV相关的事情变得更加容易。 (作为参考,我将这些用于哈希表实现,我必须为课程编写。对密钥进行哈希并提取值,然后你就完成了。这很棒。)

我推荐一个列表:

List<KeyValuePair<String, Int32>> things = new List<KeyValuePair<String, Int32>>();

然后你可以做一些很酷的事情,比如(LINQ):

from x in things
where x.Key == "me me me!"
select x

答案 1 :(得分:1)

如果您想通过yourGroupingType 分组 yourRecordType的记录,并执行&#39; Dictionary-Things&#39;有了它 - 为什么不选择DictionarySortedDictionary

Dictionary <yourGroupingType, List<yourRecordType > >

我认为这将为您提供所需的一切。字典有很多方法。

如果你真的只有键值对,那么结构就会更简单,但是我不知道分组会在哪里出现?