Daten sind eine lokale CSV-Datei, die über OleDB in einen Ado.net-Datensatz geladen wird. Die Tabelle enthält mehr als 40 Spalten mit Rechnungsdetails. Jede Zeile ist eine separate Position innerhalb einer Rechnung, die aus 1 bis n Zeilen bestehen kann.LINQ - Gruppe/Summe mehrerer Spalten
Die Abfrage wird verwendet, um die Rechnungsdetails in einer einzigen Zeile pro Rechnung zu gruppieren, wobei der Rechnungsbetrag und der Saldo zusammengerechnet werden.
Folgendes funktioniert, was ich versuche festzustellen: Ist es möglich, dies in einer einzigen Abfrage zu tun?
//group the invoices by invoicenumber and sum the total
//Zoho has a separate record (row) for each item in the invoice
//first select the columns we need into an anon array
var invoiceSum =
DSZoho.Tables["Invoices"].AsEnumerable()
.Select (x =>
new {
InvNumber = x["invoice number"],
InvTotal = x["item price"],
Contact = x["customer name"],
InvDate = x["invoice date"],
DueDate = x["due date"],
Balance = x["balance"],
});
//then group and sum
var invoiceTotals =
invoiceSum
.GroupBy (s => new {s.InvNumber, s.Contact, s.InvDate, s.DueDate})
.Select (g =>
new {
InvNumber = g.Key.InvNumber,
InvDate = g.Key.InvDate,
DueDate = g.Key.DueDate,
Contact = g.Key.Contact,
InvTotal = g.Sum (x => Math.Round(Convert.ToDecimal(x.InvTotal), 2)),
Balance = g.Sum (x => Math.Round(Convert.ToDecimal(x.Balance), 2)),
});
Sie GroupBy platzieren können direkt nach dem ersten auswählen , ohne Einführung RechnungTotals Variable – Uriil
möglich Duplikat von [Nach mehreren Spalten gruppieren] (http://StackOverflow.com/Questions/847066/Group-By-Multiple-Columns) – psubsee2003