如何使用C#计算DataTable列的总和(总计)

时间:2016-09-02 10:46:31

标签: c#

DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[3] { new DataColumn("EmployeeId", typeof(int)),
        new DataColumn("Name", typeof(string)),
        new DataColumn("Salary", typeof(int)) });
dt.Rows.Add(1, "John Hammond", 45000);
dt.Rows.Add(2, "Mudassar Khan", 32000);
dt.Rows.Add(3, "Robert Schidner", 19000);
dt.Rows.Add(3, "Suzanne Mathews", 18500);

这是我的桌子 我想加薪。

3 个答案:

答案 0 :(得分:3)

您也可以使用LINQ:

代替dt.Compute
int sum = dt.AsEnumerable().Sum(r => r.Field<int>("Salary"));

LINQ的优点在于它可以很容易地计算everage:

double average = dt.AsEnumerable().Average(r => r.Field<int>("Salary"));

或获得最高薪水:

int maxSalary = dt.AsEnumerable().Max(r => r.Field<int>("Salary"));

或过滤,计算所有高于3000的工资:

int countHighSalary = dt.AsEnumerable().Count(r => r.Field<int>("Salary") >= 3000);

答案 1 :(得分:2)

DataTable Compute函数接受两个参数 1.表达式 - 它是一个聚合函数,如SUM,COUNT,MIN,MAX和AVG。 2.过滤器 - 用于过滤WHERE子句之类的行。如果设置为空白则考虑所有行。

DataTable Compute without Filter表达式 在下面的示例中,使用DataTable Compute函数计算所有员工的Salary列的Sum(Total)。 Filter Expression设置为Blank,以计算所有行的Salary列的Sum(Total)。

int sum = Convert.ToInt32(dt.Compute("SUM(Salary)", string.Empty));

DataTable Compute with Filter表达式 在下面的示例中,使用DataTable Compute函数和Filter表达式计算ID大于2的员工的Salary列的Sum(Total)。

int sum = Convert.ToInt32(dt.Compute("SUM(Salary)", "EmployeeId > 2"));

答案 2 :(得分:2)

非常简单,尝试一下...

     double sum = Convert.ToDouble(dt.Compute("SUM(datatable_Column_Name)", string.Empty));
//Datatable Column Name Put Only