21

次の形式のデータを含むテーブル NCR があります。

ID | Date     | Item   | Type | Qty
1  | 01/01/13 | Apple  | A    | 1 
2  | 01/01/13 | Apple  | B    | 1 
3  | 01/01/13 | Orange | C    | 1 
4  | 01/01/13 | Orange | A    | 2 
6  | 01/01/13 | Orange | C    | 1 

次のように、特定の日付の型と合計の要約を提供する linq クエリを作成したいと思います。

Item   | A | B | C
Apple  | 1 | 1 | 0 
Orange | 2 | 0 | 2 

これまでのところ、私はこれを持っています:

var q = data.GroupBy(l => l.Item)
             .Select(g => new {
                                    Item = g.Key,
                                    Total = g.Sum(c => c.Qty),
                                    A = g.Sum(c => c.Type == "A"),
                                    B = g.Sum(c => c.Type == "B"),
                                    C = g.Sum(c => c.Type == "C")
});

ただし、g.Sumラムダステートメントに基準を与えることはできないようです。Count (これは間違ったデータです) を使用すると、基準を指定できますが、Sum にこれがないのはなぜですか? 利用可能なデータの要約テーブルを作成する代わりに、どのような方法がありますか?

4

1 に答える 1

38

提供されたデリゲートはSum述語ではありません。それはセレクターです。

Qtyプロパティを合計しようとしていますか?もしそうなら、私はあなたが望むと思います:

A = g.Where(c => c.Type == "A").Sum(c => c.Qty),
B = g.Where(c => c.Type == "B").Sum(c => c.Qty),
C = g.Where(c => c.Type == "C").Sum(c => c.Qty)

(もちろん、タイプ別にグループ化することもできます。)

于 2013-01-28T11:46:43.910 に答える