72

LINQ to SQL を使用して、OrderDetails のコレクションを持つ Order クラスを作成しました。Order Details には、Qnty x ItemPrice を取得する LineTotal というプロパティがあります。

データベースの新しい LINQ クエリを実行して注文合計を見つける方法は知っていますが、DB から OrderDetails のコレクションを既に持っているので、LineTotal の合計をコレクションから直接返す簡単な方法はありますか?

Order クラスのプロパティとして注文合計を追加したいと思います。コレクションをループして、各 Order.OrderDetail で合計を計算できると思いますが、もっと良い方法があると思います。

4

1 に答える 1

161

LINQ to Objects を実行し、LINQ を使用して合計を計算できます。

decimal sumLineTotal = (from od in orderdetailscollection
select od.LineTotal).Sum();

ラムダ式を使用してこれを行うこともできますが、これは少し「よりクリーン」です。

decimal sumLineTotal = orderdetailscollection.Sum(od => od.LineTotal);

必要に応じて、次のようにこれを Order クラスに接続できます。

Public Partial Class Order {
  ...
  Public Decimal LineTotal {
    get {
      return orderdetailscollection.Sum(od => od.LineTotal);
    }
  }
}
于 2008-09-15T05:02:40.037 に答える