2

これはばかげた質問だと確信していますが、答えを探しましたが、見つかりませんでした。

私はテーブルを持っています

  1. Customers には、userId、name、および orderId の 3 つの列が含まれます。
  2. 注文には、orderId、userId、price の 3 つの列が含まれます。

テーブル間の関係は、1 人の顧客と多数の注文です。

特定のユーザーの注文価格を合計したい。次のようになります。

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をキャストすると、それがnull許容の小数であることを示します。したがって、プロパティを使用して実際の値を取得する必要があります(存在する場合は、を介して決定されます) 。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 に答える