02/10/2018, 11:31

[C#] Hướng dẫn tính toán (sum, average, count, min, max) trên datatable sử dụng DataTable Compute function và Linq

Bài viết hôm nay, mình sẽ hướng dẫn các bạn tính toán trên DataTable sử dụng Compute Function và Linq trong C# và VB.NET Ví dụ: Thực hiện tính lương nhân viên trong DataTable như Demo bên dưới C# DataTable dt = new ...

Bài viết hôm nay, mình sẽ hướng dẫn các bạn tính toán trên DataTable sử dụng Compute Function và Linq trong C# và VB.NET

Ví dụ: Thực hiện tính lương nhân viên trong DataTable như Demo bên dưới

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);

VB.NET

Dim dt As New DataTable()
dt.Columns.AddRange(New DataColumn(2) {New DataColumn("EmployeeId", GetType(Integer)), _
                                       New DataColumn("Name", GetType(String)), _
                                       New DataColumn("Salary", GetType(Integer))})
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)

Bây giờ, mình sẽ thực hiện phép tính trên datatable trên.

Cách 1: Sử dụng Compute function

Cú pháp: DataTable.Compute(hành động, điều kiện)

Hành động: Compute cung cấp cho chúng ta các phương thức tính toán sau: SUM, COUNT, MIN, MAX and AVG.

Điều kiện: Chúng ta sẽ tính toán theo điều kiện.

Câu ví dụ: Tính lương không có điều kiện

C#

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

VB.NET

Dim sum As Integer = Convert.ToInt32(dt.Compute("SUM(Salary)", String.Empty))

Tính lương có điều kiện EmployeeID >2

C#

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

VB.NET

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

Cách 2: Sử dụng LINQ

Thực hiện tính tổng lương Employee không có điều kiện

C#

int sum = dt.AsEnumerable().Sum(row => row.Field("Salary"));

VB.NET

Dim sum As Integer = dt.AsEnumerable().Sum(Function(row) row.Field(Of Integer)("Salary")

- Thực hiện tính lương với điều kiện EmployeeID >2

C#

int sum = dt.AsEnumerable().Where(row => row.Field("EmployeeId") > 2).Sum(row => row.Field("Salary"));

VB.NET

Dim sum As Integer = dt.AsEnumerable().Where(Function(row) row.Field(Of Integer)("EmployeeId") > 2).Sum(Function(row) row.Field(Of Integer)("Salary"))

HAVE FUN :)

Tags: datasetdatatablelinq
0