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);
这是我的桌子 我想加薪。
答案 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