【问题标题】:Group By List<Item>按列表分组<项目>
【发布时间】:2012-04-25 19:54:21
【问题描述】:

我有这门课:

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

现在我需要一个查询来查找数据库中的每个项目,按产品分组,以及数量和总计的总和。 为了找到每个项目,我使用:

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

但我不知道如何对这些项目进行分组。有人可以帮我吗?

【问题讨论】:

  • 什么是grupo?那个是从哪里来的?将这些项目分组是什么意思 - 是什么意思?
  • 同一个IdProduct的产品有很多吗?
  • Oded,对不起......“grupo”在现实中是“retorno”。我编辑。
  • L.B.:不,每个产品都有一个唯一的 ID。

标签: c# linq list group-by


【解决方案1】:

您的问题还不清楚,但它听起来您想要一个查询,例如:

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

然后你如何将它传回去是另一回事 - 你几乎肯定想要List&lt;Item&gt;虽然......

【讨论】:

  • 谢谢,这是一个很好的解决方案,但现在我该如何操作呢?这返回一个 List ?如果是,我如何获得列表中的每个字段?
  • @JohnyMoraes:这就是为什么我说“你如何将它传回去是另一回事”——你可能想为 just 这个分组创建一个新类型。跨度>
猜你喜欢
  • 2023-04-02
  • 1970-01-01
  • 2021-08-18
  • 1970-01-01
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多