- PR -

LINQを使用した集計方法

1
投稿者投稿内容
OzzyOZ
会議室デビュー日: 2008/08/20
投稿数: 8
投稿日時: 2008-08-20 10:54
お世話になっております。

LINQを使用した集計方法で悩んでいます。

2つのキー項目を使って集計を行いたいのですが、
どうやればできるのかがわかりません。

EX)hogeK1とhogeK2でhoge数量の集計を行いたい。
hogeK1|hogeK2|hoge数量
1 |1 |10
1 |1 |20
2 |2 |30
2 |2 |40
------------------
期待する結果
hogeK1|hogeK2|hoge数量
1 |1 |30
2 |2 |70

キー項目が1つであれば、
var db = new HogeDataContext();

var hogehoge = from hogeT in db.HOGETABLE
group hogeT.hoge数量 by hogeT into gr
select{
total = gr.Sum()
}
で、取得できるのだと思いますが。

ご存知の方がいらっしゃいましたらご教授願います。
OzzyOZ
会議室デビュー日: 2008/08/20
投稿数: 8
投稿日時: 2008-08-20 14:45
自己レスです。

以下のようにすればいいようですね。

group hogeT.hoge数量 by new { hogeT.hogeK1, hogeT.hogeK2 }

http://msdn.microsoft.com/ja-jp/library/bb386922.aspx
OzzyOZ
会議室デビュー日: 2008/08/20
投稿数: 8
投稿日時: 2008-08-20 15:20
また別の問題が...

以下のように考えているのですが、Keyの値が同じになってしまっているようです。

var hogehoge = from hogeT in db.HOGETABLE
group hogeT.hoge数量 by new { hogeT.hogeK1, hogeT.hogeK2 } into gr
select new {
gr.Key.hogeK1,
gr.Key.hogeK2,
total = gr.Sum()
};

期待する結果
hogeK1|hogeK2|hoge数量
1 |1 |30
2 |2 |70

実際は
hogeK1|hogeK2|hoge数量
2 |2 |30 ←キーが同じ
2 |2 |70 ←キーが同じ

となってしまっているようです。

期待する結果のようにしたいのですが方法を
ご存知の方がいらっしゃいましたらご教授願います。
OzzyOZ
会議室デビュー日: 2008/08/20
投稿数: 8
投稿日時: 2008-08-20 15:30
またまた自己レスですみません。

勘違いだったようです。
1

スキルアップ/キャリアアップ(JOB@IT)