指定されたクラス:1つのlinq文で2つ以上の値をSum()することはできますか?
public class FooAmounts
int Id
decimal Month1
decimal Month2
...
decimal Month12
decimal Year2
decimal Year3
decimal Future
私は毎月の合計を持っている単一の新しいFooAmountsを作成したいと思います
5つのエントリ(!funnily十分同上の1-5)とIEnumerable<FooAmounts>
/年持っていますただし、Id == 1 + Id == 2の場合のみ
var footle = (from f in foolist
where f.Id == 1 || f.Id == 2
select new FooAmounts{
Month1 = Sum(month 1s),
Month2 = Sum(month 2s),
etc etc.
Future = Sum(futures)
).FirstOrDefault();
私は再作成するには、このT-SQLしようとしています:
select SUM(Month1) as Month1, SUM(Month2) as Month2, SUM(Month3) as Month3 from FooAmount where Id=1 or Id=2"
私はgroup by f.Id into grp
句を使用して、同様のacheiveすることができますが、その2つの項目で私を残し、したがって、私が最初に使用することはできません/ FoD、私は手動でそれらをまだ残しておく必要があることを意味...私はどこかでトリックを欠場する必要がありますように思える?
注:FirstOrDefault()はそこにしかないので、1つのオブジェクトを含む列挙型ではなく、単一のオブジェクトを取得します。私は(おそらく間違って!)これは常に1つのアイテムだけを返すべきだと思う...計算に入ったアイテムの数に関係なく、Sum()の結果は1つだけです。
おそらくひどく言われているApols。私は単純に、オブジェクトのリスト(すでに持っているもの)か、Sum(s => s.property)を毎月... Year私が望んでいた。 – BlueChippy
@BlueChippy:いくつかのオプションで投稿を編集しました。私はこれらのオプションを超えてシンプルでエレガントなものはないと思う。 –
ありがとうございましたJon - 私は、このt-sqlの同等の "(1月にSUM1を選択し、Month2としてSUM(Month2)、FooAmountからMonth3 をId = 1またはId = 2"として再作成したいと考えていました。 – BlueChippy