Vorrei suggerire un'espansione sul risposta Steven s', dal momento che restituirà solo una sequenza dei valori scalari c
e non li tengono associati agli utenti o agli importi a
e . Prova questo:
var query1 = from i in table
group i by i.user
into g
let a = g.Where(t => t.type == "a").Sum(t => t.amount)
let b = g.Where(t => t.type == "b").Sum(t => t.amount)
let c = g.Where(t => t.type == "c").Sum(t => t.amount)
- (a + b)
select new {user = g.Key, a, b, c};
Quindi, se si vuole riconvertirlo in forma tabellare:
var query2 = query1.SelectMany(q => new List<TableType>
{
new TableType(q.user, "a", q.a),
new TableType(q.user, "b", q.b),
new TableType(q.user, "c", q.c)
})
.OrderBy(t => t.user)
.ThenBy(t => t.type);
Nota: Ho provato questo e funziona.
fonte
2012-01-23 15:57:04
in LINQ to SQL oppure i dati sono già presenti in una raccolta tipizzata (e quindi LINQ su oggetti)? –
Suppongo che intendi che desideri raggruppare in base al valore dell'utente, poiché tutte le combinazioni di utente e tipo sono uniche? – Guffa
LINQ to SQL, questo è un databile genificato – moeezed