web-dev-qa-db-ja.com

コレクション内のアイテムの合計

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

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

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

70
Adrian

オブジェクトに対してLINQを実行し、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);
    }
  }
}
157
Espo