В .NET 3.5 и выше, то есть ILookup<TKey,TValue>
. К сожалению, единственной предоставленной реализацией является неизменяемая Lookup<TKey,TValue>
, однако ее легко реализовать повторно. EditableLookup<TKey,TValue>
включено в MiscUtil .
При ILookup<TKey,TValue>
индексатор TKey
возвращает IEnumerable<TValue>
(даже если для этого ключа не было совпадений), поэтому обычно используется:
foreach(var value in lookup[key])
DoSomethingWith(value);