【问题标题】:C# Linq to aggregate results and compute averagesC# Linq 聚合结果并计算平均值
【发布时间】:2017-06-23 12:32:02
【问题描述】:
我创建了一个 sqlite 数据库。现在我需要一张表来存储我的客户购买的数量和他们支付的平均价格。
代码在 C# 中,表的结构如下:
客户ID;物品编号;数量;价钱;日期;
我存储我的客户 ID 和他们在给定日期购买给定数量的商品时支付的价格。
碰巧同一客户可以在多天购买同一商品并支付不同的价格。
我需要的是汇总每个客户为给定项目购买的所有数量以及他支付的平均价格。
我认为这可以在 Linq 中完成以提高效率,但我不确定如何为上述需要设置查询。任何帮助深表感谢。
【问题讨论】:
标签:
c#
sql
.net
linq
sqlite
【解决方案1】:
你有什么尝试吗?怎么样:
var result = data.GroupBy(x => new {x.ClientID, x.ItemID})
.Select(
g =>
new
{
g.Key.ClientID,
g.Key.ItemID,
AvgPrice = g.Average(c => c.Price),
SumQuantity = g.Sum(c => c.Quantity)
});
【解决方案2】:
purchases.GroupBy(g => new { g.ClientId, g.ItemId })
.Select(g => new
{
ClientId = g.Key.ClientId,
ItemId = g.Key.ItemId,
Price = g.Sum(p => p.Price * p.Quantity) / g.Sum(p => p.Quantity)
});