2017-05-22 19 views
0

の合計():LINQ:以下のリストを与えられた個別の要素

(TABLE1) 
Expedient Amount 
1   10 
1   10 
2   3 
2   3 
3   4 

は、私は別の方策の「金額」の合計を計算します。だから、総合計は次のようになります。このSQL文に似

10 (from Expedient 1) + 
3 (from Expediente 2) + 
4 (from Expedient 3) = 
10 + 3 + 4 = 17 

何か:私の頭の上オフ

Select SUM(Amount) from 
(Select Distinct Expedient, Amount from TABLE1) DummyTable 
+0

をどのような関連するC#のコードを表示し、あなたのモデルクラス –

+0

してくださいあなたが同じ「便宜」のために異なる「金額」番号を持っていればあなたはしますか?どうやって選ぶ? –

+0

ここではマスター・ディテールはありません.Expientientは常に同じ金額を持っています – Txaran

答えて

4

、このようなものは、トリックを行う必要があります。

TABLE1 
    .GroupBy(t => new {t.Expedient, t.Amount}) 
    .Select(g => g.FirstOrDefault()) 
    .Sum(item => item.Amount); 
+0

'GroupBy()'は2つのセレクターを必要とする過負荷を持ちます。 – dotNET

+0

また、 'Sum()'もセレクタをとることができます。 – dotNET

+0

'TABLE1.GroupBy(t =>新しい{t.Expedient、t.Amount}、t2 => t2.Amount).Sum()'は実行する必要があります。 – dotNET

0

スペンダーの解決策があります。

Table1.GroupBy(t => new {t.Expedient, t.Amount}, (t, g) => g.First()).Sum(g => g.Amount) 
0

てみてくださいコード::あなたは、(つまり、LINQが何であるかだ)少しよりコンパクト行くGroupByのこのオーバーロードを使用したい場合は

var result = (from p in tabledetails.AsEnumerable() 
         group p by p.id into jj 
         select new table1 
         { 
          id = jj.FirstOrDefault().id, 
          value = jj.ToList().Max(c => c.value) 
         }).ToList().Sum(c => c.value); 
関連する問題