我有一个使用表,用于存储各种产品的客户的日常使用情况。我现在想要返回一个结果,该结果按customerID对结果进行分组,以了解各种产品的总使用量/组合使用情况。
下面是一个完美图解的当前数据结构示例:)
我希望返回一个结果集(再次,敬佩我的插图能力):
使用EF可以进行这种计算吗?我试图避免多个循环来实现同样的事情,所以这将极大地帮助一个兄弟。
答案 0 :(得分:1)
您需要的是GroupBy
和Sum
:
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()
用于检索数据,如果您打算进行查询,则不需要。