NEWS

[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

[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
Đăng bởi: Thảo Meo - Lượt xem: 27170 07:48:06, 10/10/2017C#   In bài viết

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

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

[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
Đăng bởi: Thảo Meo - Lượt xem: 27170 07:48:06, 10/10/2017C#   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.