2010-12-22 66 views
1

我有一個產品對象聲明爲:如何使用LINQ嵌套到列表中的字典值的SUM?

Product { 
    int ProductID; 
    string ProductName; 
    int ProductTypeID; 
    string ProductTypeName; 
    int UnitsSold 
    Dictionary <string, int> UnitsSoldByYear; 
} 

我想就UnitsSold和UnitsSoldByYear性質的總和與LINQ查詢,但我不知道如何使這種總和在一本字典! 這裏是我的begining LINQ查詢代碼:

var ProductTypeSum = from i in ProductsList 
        group i by new { i.ProductTypeID, i.ProductTypeName} into pt 
        select new 
         { 
          ProductTypeID= pt.Key.ProductTypeID, 
          ProductTypeName= pt.Key.ProductTypeName, 
          UnitsSoldSum= pt.Sum(i => i.UnitsSold), 
          // How to make a Dictionary sum here 
          } 

謝謝您的幫助!

回答

13

總之你內心的字典只是做:

DictSum = pt.Select(x => x.UnitsSoldByYear.Values.Sum()).Sum() 

或相等:

DictSum = pt.Sum(x => x.UnitsSoldByYear.Values.Sum()) 

編輯:

根據OP評論,這將創建與和字典通過每個鍵:

DictSum = pt.SelectMany(kvp => kvp.UnitsSoldByYear) 
      .GroupBy(kvp => kvp.Key) 
      .ToDictionary(grp => grp.Key,grp => grp.Sum(kvp => kvp.Value)) 
+0

編輯:對不起,我沒有注意到`pt`是一組... – digEmAll 2010-12-22 11:57:53