簡體   English   中英

如何使用C#計算DataTable列的總和(總計)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM