Хорошо, похоже, вы пытались создать словарь элементов с различными свойствами (Cost, Customers, et c ...), в связи с чем возникает вопрос: почему бы просто не создать класс?
В конце концов, было бы довольно просто превратить ваш словарь словаря элементов в единый словарь свойств, например, приведенный ниже.
public class ItemProperties
{
public double Price {get; set;} = 0;
public int Customers {get; set;} = 0;
//Whichever other properties you were thinking of using.
}
static ItemProperties AddAll(Dictionary<string, ItemProperties> items)
ItemProperties finalitem = new ItemProperties();
{
foreach (var item in items)
{
finalitem.Price += item.Price;
finalitem.Customers += item.Customers;
//Repeat for all other existing properties.
}
return finalitem;
}
Конечно, это работает, только если число и вид свойств неизменен. Другой способ решения этой проблемы - использовать TryParse для поиска свойств в Dictionary2, которые, по вашему мнению, могут быть добавлены. Однако это проблематично c и требует хорошей проверки ошибок.
static Dictionary < string, string > AddNestedDictionary(Dictionary < string, Dictionary < string, string > items) {
Dictionary < string, string > finalitem = new Dictionary < string, string > ();
foreach(var item in items) {
foreach(var prop in item) {
if (!finalitem.ContainsKey(prop.Key)) {
finalitem.Add(prop);
}
double i = 0;
if (Double.TryParse(prop.Value, out i)) {
finalitem[prop.Key] += i;
}
}
}
return finalitem;
}
Опять же, не самый лучший ответ по сравнению с простотой класса c. Но это будет цена, которую вы платите за неясность.