using System.Collections.Generic;
public static void Main()
var lookup = new Lookup<int, string>();
foreach(var group in lookup)
Console.Write(group.Key);
group.Value.ForEach(g => Console.Write(g + " "));
public class Grouping<TKey, TElement> : List<TElement>, IGrouping<TKey, TElement>
public Grouping(TKey key, TElement element){
public class Lookup<TKey, TElement> : Dictionary<TKey,Grouping<TKey, TElement>>
public void Add(TKey key, TElement element)
if(this.ContainsKey(key))
this.Add(key, new Grouping<TKey, TElement>(key,element));