LINQ版本的SQL Group By

时间:2015-02-06 09:31:00

标签: c# linq

我的SQL设计师目前不在,我需要得到一些(我认为很简单)LINQ完成了,我从来没有学过这些东西,但我认为这很简单,他甚至离开了我一些示例的SQL代码,但我所有的努力都失败了。

我想做的是:

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

我希望从中生成第二个列表,其中ItemNames的所有订单项的quantity总计ItemNamePPU的最大值Select ItemName SUM(Quantity) MAX(PPU) FROM ..... (my list) Group By ItemName

要清除这里是我留下的SQL。

{{1}}

我很感激获得LINQ版本的任何帮助。

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

我认为你的课程是:

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