Данные - это локальный файл CSV, который загружается в набор данных ado.net через OleDB. Таблица содержит 40 + столбцов, состоящих из деталей счета-фактуры. Каждая строка представляет собой отдельную позицию внутри счета-фактуры, которая может состоять из 1-го ряда.
Запрос используется для группировки деталей счета-фактуры в одну строку на счет-фактуру, итоговая сумма счета и баланс.
Следующие работы, которые я пытаюсь определить: Возможно ли это сделать в одном запросе?
//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)),
} );