Как посчитать сумму записей и показать в отдельном столбце в C#? - PullRequest
1 голос
/ 08 апреля 2020

У меня есть DataTable в C#, где у меня есть ежемесячный отчет. Например:

enter image description here

Я только что показал 4 даты на сейчас же. Все эти даты взяты из таблицы PIVOT в SQL. Принимая во внимание, что Я добавил столбец Итоги программно.

Я хочу подсчитать количество A, B и C в Всего A , Всего B и Всего C Поле.

Это то, что я пытался до сих пор

  DataTable report = DataAccess.GetDataInDataTable(ConstantFieldsModel.PRIMARYCONNECTION, "usp_GetReport", CommandType.StoredProcedure, param);
  report.Columns.Add("Total As", typeof(int)).SetOrdinal(2);// adds 'Total' field at position 5
  report.Columns.Add("Total Bs", typeof(int)).SetOrdinal(3);
  report.Columns.Add("Total Cs", typeof(int)).SetOrdinal(4);
  foreach (DataRow row in report.Rows)
  {
      int sum = 0;
      foreach (DataColumn col in report.Columns)
      {
          if (!row.IsNull(col))
          {
             string val = row[col].ToString();
             int a;
             if (int.TryParse(val, out a))
             {
                sum += a;
              }
            }
    }
    row.SetField("Total", sum);
  }

I не получить ошибок, но Total показывает идентификаторы каждой записи, которая NOT , что я хочу. (Я знаю, что поле Total находится в начале, но это потому, что у меня есть месячный отчет, чтобы избежать прокрутки, просто чтобы увидеть итог, я добавил его впереди.)

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 08 апреля 2020

Я добавил программно столбец Итоги.

Итак: держите добавленные столбцы:

List<DataColumn> myTotals = new List<DataColumn>();\
// and .Add when you create each column

Теперь, вместо того, чтобы смотреть на все столбцы:

foreach (DataColumn col in report.Columns)

просто посмотрите на эти 3

foreach (DataColumn col in myTotals)

Если вы объявили их как тип int, вы, вероятно, можете избежать форматирования / Шаг разбора тоже:

sum += (int)row[col];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...