Group By List<Item>

大兔子大兔子 提交于 2019-12-12 04:58:18

问题


I have this class:

public class Item 
{
    public virtual int32 Id { get; set; }
    public virtual Previa Previa { get; set; }
    public virtual Product Product { get; set; }
    public virtual Int32 Quantity { get; set; }
    public virtual Decimal Price { get; set; }
    public virtual Decimal Total { get; set; }
}

And now i need to a query to find every Items in database, group by Products, with the sum of Quantity and Total. For find every Items, i use:

public List<Item> FindItem(int IdProduct = 0)
{
    var retorno = (from c in Session.Query<Item>()
                   select c);

    if (IdProduto > 0)
        retorno = retorno.Where(x => x.Product.Id == IdProduct)

    return retorno.ToList<Item>();
}

But I don't know how to group these items. Could someone please help me?


回答1:


Your question is far from clear, but it sounds like you want a query such as:

var query = from item in Session.Query<Item>()
            group item by item.Product into g
            select new {
                Product = g.Key,
                Quantity = g.Sum(item => item.Quantity),
                Total = g.Sum(item => item.Total)
            };

How you then pass that back is a different matter - you almost certainly don't want a List<Item> though...



来源:https://stackoverflow.com/questions/10141030/group-by-listitem

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!