【问题标题】:Group BY multiple using linq [duplicate]使用linq对多个进行分组[重复]
【发布时间】:2016-07-20 06:19:08
【问题描述】:

尝试按多个文件分组,但遇到问题。我想按时间段、产品代码分组。

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)
                            };

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    您可以创建一个匿名对象来对多列进行分组(例如...new {prop1 prop2}),Key.PropertyName 可以访问分组的字段

    试试这个。

    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)
                              };
    

    【讨论】:

      【解决方案2】:

      这是使用匿名类型的正确语法

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

      然后在选择中:

      g.Key.ProductCodeg.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)
                                };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-02
        • 1970-01-01
        • 1970-01-01
        • 2017-04-12
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        相关资源
        最近更新 更多