Как рассчитать сумму столбца данных в asp.net? - PullRequest
58 голосов
/ 05 мая 2011

У меня есть DataTable, который имеет 5 столбцов:

  • ID
  • Имя
  • Номер счета
  • Филиал
  • Сумма

Таблица данных содержит 5 строк.

Как показать сумму столбца суммы в элементе управления меткой как «Общая сумма»?

Ответы [ 9 ]

125 голосов
/ 05 мая 2011

Чтобы вычислить сумму столбца в DataTable, используйте метод DataTable.Compute .

Пример использования из связанной статьи MSDN:

DataTable table = dataSet.Tables["YourTableName"];

// Declare an object variable.
object sumObject;
sumObject = table.Compute("Sum(Amount)", string.Empty);

Отобразите результат в ярлыке общей суммы следующим образом:

lblTotalAmount.Text = sumObject.ToString();
29 голосов
/ 05 мая 2011
 this.LabelControl.Text = datatable.AsEnumerable()
    .Sum(x => x.Field<int>("Amount"))
    .ToString();

Если вы хотите отфильтровать результаты:

 this.LabelControl.Text = datatable.AsEnumerable()
    .Where(y => y.Field<string>("SomeCol") != "foo")
    .Sum(x => x.Field<int>("MyColumn") )
    .ToString();
15 голосов
/ 05 мая 2011

Вы можете сделать как ..

DataRow[] dr = dtbl.Select("SUM(Amount)");
txtTotalAmount.Text = Convert.ToString(dr[0]);
8 голосов
/ 05 мая 2011

Если у вас есть таблица данных ADO.Net, вы можете сделать

int sum = 0;
foreach(DataRow dr in dataTable.Rows)
{
   sum += Convert.ToInt32(dr["Amount"]);
}

Если вы хотите запросить таблицу базы данных, вы можете использовать

Select Sum(Amount) From DataTable
5 голосов
/ 08 ноября 2012
  public decimal Total()
    {
      decimal decTotal=(datagridview1.DataSource as DataTable).Compute("Sum(FieldName)","");
      return decTotal;
    }
4 голосов
/ 29 февраля 2016

Вычислить сумму столбца в датированных данных, работает 100%

lbl_TotaAmt.Text = MyDataTable.Compute("Sum(BalAmt)", "").ToString();

если вы хотите иметь какие-либо условия, используйте его вот так

   lbl_TotaAmt.Text = MyDataTable.Compute("Sum(BalAmt)", "srno=1 or srno in(1,2)").ToString();
2 голосов
/ 26 февраля 2016

Вы можете использовать Linq по группировке имен

  var allEntries = from r in dt.AsEnumerable()
                            select r["Amount"];

с использованием пространства имен using System.Linq;

Вы можете найти общий выборочный итог, промежуточный итог, общий итог в датах, используя c # на Myblog

0 голосов
/ 09 октября 2017

Я думаю, что это решает

using System.Linq;


(datagridview1.DataSource as DataTable).AsEnumerable().Sum(c => c.Field<double>("valor"))
0 голосов
/ 12 сентября 2016

Попробуйте это

int sum = 0;
foreach (DataRow dr in dt.Rows)
{
     dynamic value = dr[index].ToString();
     if (!string.IsNullOrEmpty(value))
     { 
         sum += Convert.ToInt32(value);
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...