[英]how to calculate sum (Total) of DataTable Columns using 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);
這是我的表,我想增加薪水。
不使用dt.Compute
您也可以使用LINQ:
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);
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"));
這么簡單試試這個......
double sum = Convert.ToDouble(dt.Compute("SUM(datatable_Column_Name)", string.Empty));
//Datatable Column Name Put Only
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.