SQL 分组依据的 LINQ 版本

LINQ version of SQL Group By

我的 SQL 设计师目前不在,我需要完成一些(我认为很简单的)LINQ,我从来没有抽出时间学习这些东西,但我认为它会很简单够了,他甚至给我留下了一些 SQL 示例代码,但我所有的努力都失败了。

我想做的是这样的:

我有一个 OrderedItem 对象的列表,其中包含 ItemNamequantityPPU

我想从中生成第二个列表,只有不同的 ItemNames,所有具有 ItemName 的订单项的总计 quantity,最大 PPU.

清除这里是SQL我留下的

Select ItemName
       SUM(Quantity)
       MAX(PPU)
FROM ..... (my list)
Group By ItemName

如果能帮助我获得此的 LINQ 版本,我将不胜感激。

var query = from rec in dbo.TableName
            group rec by rec.ItemName into ItemNameGroup
            select new { 
                ItemName = ItemNameGroup.Key, 
                SumQuantity = ItemNameGroup.Sum(r => r.Quantity),
                MaxPPU = ItemNameGroup.Max(r => r.PPU)
            };

我假设你的 class 是:

class OrderedItem
{
    public string ItemName { get; set; }
    public decimal Quantity { get; set; }
    public int PPU { get; set; }
}

然后您可以使用扩展方法编写以下 LINQ 查询:

var objects = new List<OrderedItem>();
objects.GroupBy(x => x.ItemName).Select(x => new
{
    ItemName = x.Key,
    Quantity = x.Sum(y => y.Quantity),
    PPU = x.Max(y => y.PPU)
});