EF6 - 在单个查询中返回计算的分组结果

时间:2016-09-02 11:17:02

标签: c# entity-framework

我有一个使用表,用于存储各种产品的客户的日常使用情况。我现在想要返回一个结果,该结果按customerID对结果进行分组,以了解各种产品的总使用量/组合使用情况。

下面是一个完美图解的当前数据结构示例:)

  • id | customerID | prod1 | prod2
  • 1。 123。 0。 1
  • 2。 125。 5。 5
  • 3。 125。 1。 1

我希望返回一个结果集(再次,敬佩我的插图能力):

  • customerID | prod1 | Prod2的
  • 123。 0。 1
  • 125。 6。 6

使用EF可以进行这种计算吗?我试图避免多个循环来实现同样的事情,所以这将极大地帮助一个兄弟。

1 个答案:

答案 0 :(得分:1)

您需要的是GroupBySum

var result = context.Customers
    // .Where(filter) // filter if needed
    .GroupBy(m => m.CustomerID)
    .Select(g => new 
    {
        CustomerID = g.Key, // We grouped according to CustomerID, so key = CustomerID
        SumProd1 = g.Sum(m => m.Prod1), // Sum Prod1 of grouped data
        SumProd2 = g.Sum(m => m.Prod2) // Sum Prod2 of grouped data
    })
    .ToList(); 

注意: ToList()用于检索数据,如果您打算进行查询,则不需要。