2016-07-20 2 views
-3

Пытается группироваться по нескольким файлам, но имеет проблемы с ним. Я хочу группировать по периоду, productcode.Группа BY multiple using linq

var ProductUsageSummary = from b in myProductUsage 
          group b by b.ProductCode into g 
          select new 
          { 
           Period = g.Key, 
           Code = g.Key, 
           Count = g.Count(), 
           TotalQty = g.Sum(n => n.Qty), 
           Price = g.Average(n => n.Price) 
          }; 

также попытался

var ProductUsageSummary = from b in myProductUsage 
          group b by b.Period b.ProductCode into g 
          select new 
          { 
           Period = g.Key(n => n.period), 
           Code = g.Key, 
           Count = g.Count(), 
           TotalQty = g.Sum(n => n.Qty), 
           Price = g.Average(n => n.Price) 
          }; 

ответ

2

Вы можете создать anonymouns объект в группу по нескольким столбцам (бывшего ... new {prop1 prop2}), и сгруппированное поле может быть доступны Key.PropertyName

Try это.

var ProductUsageSummary = from b in myProductUsage 
          group b by new { b.Period, b.ProductCode }into g 
          select new 
          { 
           Period= g.Key.Period, 
           Code = g.Key.ProductCode , 
           Count = g.Count(), 
           TotalQty = g.Sum(n => n.Qty), 
           Price = g.Average(n => n.Price) 
          }; 
0

Это правильный синтаксис, используя Анонимные типы:

group b by new { b.ProductCode, b.Period } into g 

Затем в выберите:

g.Key.ProductCode и g.Key.Period

Полный запрос:

var ProductUsageSummary = from b in myProductUsage 
          group b by new { b.Period b.ProductCode } into g 
          select new 
          { 
           Period = g.Key.Period, 
           Code = g.Key.ProductCode, 
           Count = g.Count(), 
           TotalQty = g.Sum(n => n.Qty), 
           Price = g.Average(n => n.Price) 
          };