Словарь списка ... в .NET 3.5, который будет ILookup<TKey,TValue>
. Реализация по умолчанию (Lookup<TKey,TValue>
) неизменна, но я написал EditableLookup<TKey,TValue>
для MiscUtil . Это будет намного проще в использовании - т.е.
var data = new EditableLookup<string, int>();
data.Add("abc",123);
data.Add("def",456);
data.Add("abc",789);
foreach(int i in data["abc"]) {
Console.WriteLine(i); // 123 & 789
}
Кроме этого, метод расширения:
public static void Add<TKey, TList, TValue>(
this IDictionary<TKey, TList> lookup,
TKey key, TValue value)
where TList : class, ICollection<TValue>, new()
{
TList list;
if (!lookup.TryGetValue(key, out list))
{
lookup.Add(key, list = new TList());
}
list.Add(value);
}
static void Main() {
var data = new Dictionary<string, List<string>>();
data.Add("abc", "def");
}