2016-11-15 31 views
1

したがって、linqを使用しているときは、この状況に常に遭遇しました。その間に+記号を持つすべてのLINQ文を記述することなく、合計を計算するためのより良い方法があり、合計値については選択項目のLinq値の合計

  var results = _context.Products.Select(d => 
      new Models.ProductData() 
      { 
       Id = d.ProductId, 
       Name = d.Product.Name, 
       Qty = d.Number.Where(y => y.Active && y.CodeId == 5 && y.Status == "NEW").Sum(y => y.FeeAmount), 
       Qty1= d.Number.Where(y => y.Active && y.CodeId == 7 && y.Status == "NEW").Sum(y => y.Fee), 
       Total = d.Number.Where(y => y.Active && y.CodeId == 5 && y.Status == "NEW").Sum(y => y.FeeAmount) + d.Number.Where(y => y.Active && y.CodeId == 7 && y.Status == "NEW").Sum(y => y.Fee) 
      } 
      ); 

:私は以下のようなコードを持っていると言いますか?私がIdでグループ化し、合計=数量+ Qty1を参照することにより、そこに合計を割り当てる最初のマッピングとリマップそれから合計を省略することができ

Total = Qty + Qty1 

ような何かを書くことができるようにするためにたくさんよりよいが、そのうちょうど回っているようです。

ご迷惑をおかけして申し訳ございません。

public double Total { 
    get { 
     return this.Qty + this.Qty1; 
    } 
} 

をし、LINQクエリでそれを設定するには避ける:あなたのModels.ProductDataクラスで

+4

'Total'に' Qty + Qty1'を返すゲッターを持つ読み取り専用プロパティを持たないのはなぜですか?その場合、最初に設定する必要はありません。 – KMoussa

+0

'Total'は計算された値なので、それ自身の値を記憶させることは難しいでしょう。後で' Qty1'を変更すると、 'Total'を更新する必要があります。 'Qty' +' Qty1'!= 'Total'の場合はどうしますか? –

答えて

6

は、次のようにTotalプロパティを定義します。

+0

さて、私はこれを考えないのは馬鹿だと感じる!答えをありがとう。私は6分でそれをマークします。 –

+1

あなたは恥じる必要はありません、私たちはすべてここで知識を学び共有しています – user449689