我确信这是一个愚蠢的问题,但我找了一个答案而找不到答案。
我有桌子
表之间的关系是一个客户到多个订单。
我想对某些用户的订单价格求和。 看起来应该是这样的:
double totalPrice = currentUser.Orders.Sum(x=>x.price);
这不起作用。这样做的正确方法是什么?感谢。
答案 0 :(得分:0)
decimal totalPrice = users.SelectMany(user => user.Orders)
.Sum(order => (decimal?)order.Price) ?? 0;
或
decimal totalPrice = (from user in users
from order in user.Orders
select (decimal?)order.Price).Sum() ?? 0;
<强>更新强>:
使用double
表示财务值是不合适的,因为它是二进制浮点点类型。将product.Price
强制转换为decimal?
表示它是可以为空的小数,因此需要使用Value
属性来获取实际值(如果存在,则通过HasValue
确定)< / p>
答案 1 :(得分:0)
我认为您应该从实体对象中选择用户(在本例中为userId = 1)
int i= users.Single(x => x.UserID== 1).Orders.Sum(x => x.Price);