Вы можете сделать это, чтобы сгруппировать целую группу элементов сразу в словарь:
var dic = data.GroupBy(data => data.groupID).ToDictionary(gdc => gdc.Key, gdc => gdc.ToList());
Но каков наилучший способ добавления элементов в эту структуру после ее создания?
Я полагаю, что только выполнение этого даст нулевое исключение, если группа еще не существует:
dic[newKey].Add(newItem);
Итак, вот лучшее, что я придумал, выглядит ли это нормально?
static Value GetOrAddNew<Key,Value>(Dictionary<Key,Value> dic, Key key) where Value: new()
{
Value ans;
if(!dic.TryGetValue(key, out ans))
{
ans = new Value();
dic.Add(key, ans);
}
return ans;
}
void func()
{
GetOrAddNew(dic,newkey).Add(newItem);
//or
GetOrAddNew(dic,newkey).AddRange(newItems);
}