Суммирование столбцов с помощью linq
Мне нужно сделать суммирование столбцов datatable. Datatable пример, как показано ниже -
Datatable (dtrec) COL1 COL2 COL3 ID AMT PERCENTAGE COL4 ----------------------------------------------------- 2022 1234 400 .20 213 2022 1234 400 .20
С помощью инструкции LINQ ниже я получаю выход, как ниже -
Datatable (dt) COL1 COL2 COL3 ID AMT PERCENTAGE COL4 ----------------------------------------------------- 1234 800 .40
DataTable dt = dtrec.AsEnumerable() .GroupBy(r => r.Field<decimal>("ID")) .Select(g => { var row = dtrec.NewRow(); row["ID"] = g.Key; row["AMT"] = g.Sum(r => r.Field<decimal>("AMT")); row["PERCENTAGE"] = g.Sum(r => r.Field<decimal>("PERCENTAGE")); return row; }).CopyToDataTable();
ожидаемый результат -
COL1 COL2 COL3 ID AMT PERCENTAGE COL4 ----------------------------------------------------- 2022 1234 800 .40 213
Здесь данные COL1 и COL4 становятся пустыми, мое требование заключается в том, что оператор linq будет выбирать все столбцы из datatable и дополнительно суммировать столбцы AMT и PERCENTAGE. Как показано в ожидаемом результате.
Еще один важный момент, чтобы рассмотреть, что, помимо удостоверения личности, АМТ и процент столбцов, остальные столбцы являются динамическими, т. е. колонны может увеличиться (например, столбец col1, столбец col2, с col3, COL4, COl5.... и т. д.), Следовательно, мы не можем включить на col1-COL4 или внутри оператора SELECT.
Любое предложение было бы полезно.
Спасибо
Что я уже пробовал:
DataTable dt = dtrec.AsEnumerable() .GroupBy(r => r.Field<decimal>("ID")) .Select(g => { var row = dtrec.NewRow(); row["ID"] = g.Key;<pre lang="text"> row["AMT"] = g.Sum(r => r.Field<decimal>("AMT")); row["PERCENTAGE"] = g.Sum(r => r.Field<decimal>("PERCENTAGE")); return row; }).CopyToDataTable();