Проблема агрегации DataTable - PullRequest
1 голос
/ 16 июня 2009

Я пытаюсь запросить в DataTable, чтобы вычислить сумму в 2 столбцах и сгруппировать результат по остальным полям. Дело в том, что я могу получить только агрегированные значения столбцов и не могу получить неагрегированные значения.

Вот код, который я использую:

var balances = from b in dtAccounts.AsEnumerable()
               group b by b.Field<decimal>("ACCOUNT_ID") into g
               select new
                      {
                          credit = g.Sum(b => b.Field<decimal>("CREDIT")),
                          debit = g.Sum(b => b.Field<decimal>("DEBIT"))
                      }

Может кто-нибудь дать подсказку о своем куске кода?

Заранее спасибо

1 Ответ

2 голосов
/ 16 июня 2009

Переменная диапазона g имеет свойство Key, представляющее ключ, по которому вы сгруппированы. В вашем случае это b.Field<decimal>("ACCOUNT_ID"). Итак, если вы хотите получить account_id с результатами, вам нужен этот запрос:

var balances = from b in dtAccounts.AsEnumerable()
               group b by b.Field<decimal>("ACCOUNT_ID") into g
               select new
                      {
                          accountId = g.Key,
                          credit = g.Sum(b => b.Field<decimal>("CREDIT")),
                          debit = g.Sum(b => b.Field<decimal>("DEBIT"))
                      }
...