Существует ли тип коллекции, который предназначен только для групп? Или это единственный вариант: List<IGrouping<Key, ItemType>>
?
В принципе, я хочу делать словарные типы со списком, такие как GroupList.ContainsKey(key)
и GroupList.TryGetItems(key, out items)
, плюс несколько связанных с группой вещей, таких как GroupList.AddToGroup(key, Item)
.
Да, я знаю, что могу написать их как методы расширения, но я не хочу изобретать велосипед, если есть что-то уже для групп.
Если нет, то я буду "сворачивать свои".
Если вы хотите группировать записи вашегоRecordType по вашему типу GroupingType и делать с ним "Словарь-вещи" - почему бы не SortedDictionary
Dictionary
или SortedDictionary
?
Dictionary <yourGroupingType, List<yourRecordType > >
Я думаю, это позволит вам все, что вам нужно. Словарь имеет богатый набор методов.
Если у вас действительно есть пары "ключ-значение", будет работать более простая структура, но я не вижу, где будет группироваться группа?
Попробуйте KeyValuePair
: http://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