2

我确信这是一个愚蠢的问题,但我寻找答案却找不到。

我有桌子

  1. 客户包含三列:userId、name 和 orderId。
  2. 订单包含三列:orderId、userId、price。

表之间的关系是一个客户对多个订单。

我想总结某些用户的订单价格。它应该看起来像这样:

double totalPrice = currentUser.Orders.Sum(x=>x.price);

这行不通。这样做的正确方法是什么?谢谢。

4

2 回答 2

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用于表示财务价值。转换to表示它是一个可以为空的小数,因此需要使用该属性来获取实际值(如果存在,通过 确定)product.Pricedecimal?ValueHasValue

于 2012-10-24T08:22:17.330 回答
0

我认为你应该从你的实体对象中选择用户(在这种情况下,userId=1)

           int i= users.Single(x => x.UserID== 1).Orders.Sum(x => x.Price);
于 2012-10-24T08:35:38.970 回答