c#/ сумма Linq где



asp.net (1)

У меня есть таблица 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 этого не хватает? Какая у меня альтернатива созданию сводной таблицы доступных данных?


Делегат, предоставленный 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)

(Или, конечно, вы можете группировать по типу.)





linq