我确信这是一个愚蠢的问题,但我寻找答案却找不到。
我有桌子
- 客户包含三列:userId、name 和 orderId。
- 订单包含三列:orderId、userId、price。
表之间的关系是一个客户对多个订单。
我想总结某些用户的订单价格。它应该看起来像这样:
double totalPrice = currentUser.Orders.Sum(x=>x.price);
这行不通。这样做的正确方法是什么?谢谢。
我确信这是一个愚蠢的问题,但我寻找答案却找不到。
我有桌子
表之间的关系是一个客户对多个订单。
我想总结某些用户的订单价格。它应该看起来像这样:
double totalPrice = currentUser.Orders.Sum(x=>x.price);
这行不通。这样做的正确方法是什么?谢谢。
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
用于表示财务价值。转换to表示它是一个可以为空的小数,因此需要使用该属性来获取实际值(如果存在,通过 确定)product.Price
decimal?
Value
HasValue
我认为你应该从你的实体对象中选择用户(在这种情况下,userId=1)
int i= users.Single(x => x.UserID== 1).Orders.Sum(x => x.Price);