在 LINQ Lambda 表达式中使用 GroupBy、Count 和 Sum

Posted

技术标签:

【中文标题】在 LINQ Lambda 表达式中使用 GroupBy、Count 和 Sum【英文标题】:Using GroupBy, Count and Sum in LINQ Lambda Expressions 【发布时间】:2011-03-25 18:03:36 【问题描述】:

我有一组具有重量、体积和所有者属性的盒子。

我想使用 LINQ 获取框信息的汇总列表(按所有者)

例如

**Owner, Boxes, Total Weight, Total Volume**  
Jim,     5,     1430.00,      3.65  
George,  2,     37.50,        1.22

谁能告诉我如何使用 Lambda 表达式来做到这一点?

【问题讨论】:

【参考方案1】:
    var ListByOwner = list.GroupBy(l => l.Owner)
                          .Select(lg => 
                                new  
                                    Owner = lg.Key, 
                                    Boxes = lg.Count(),
                                    TotalWeight = lg.Sum(w => w.Weight), 
                                    TotalVolume = lg.Sum(w => w.Volume) 
                                );

【讨论】:

【参考方案2】:
        var q = from b in listOfBoxes
                group b by b.Owner into g
                select new
                           
                               Owner = g.Key,
                               Boxes = g.Count(),
                               TotalWeight = g.Sum(item => item.Weight),
                               TotalVolume = g.Sum(item => item.Volume)
                           ;

【讨论】:

【参考方案3】:
var boxSummary = from b in boxes
                 group b by b.Owner into g
                 let nrBoxes = g.Count()
                 let totalWeight = g.Sum(w => w.Weight)
                 let totalVolume = g.Sum(v => v.Volume)
                 select new  Owner = g.Key, Boxes = nrBoxes,
                              TotalWeight = totalWeight,
                              TotalVolume = totalVolume 

【讨论】:

以上是关于在 LINQ Lambda 表达式中使用 GroupBy、Count 和 Sum的主要内容,如果未能解决你的问题,请参考以下文章

在 LINQ Lambda 表达式中使用 GroupBy、Count 和 Sum

帮助我使用实体框架从 SQL 转换为 linq 嵌套 lambda 表达式

2017-6-1 Linq表达式 Lambda 表达式

Lambda 表达式 LINQ 等效于 SQL 在同一表/变量上存在查询

LINQ:使用 Lambda 表达式获取 CheckBoxList 的所有选定值

什么是Linq表达式?什么是Lambda表达式?