DataTable trong C#

Ví dụ DataTable trong C#, nhiều ví dụ hay về kiểu biến DataTable trong C#

DataTable là 1 kiểu dữ liệu rất xưa, nhưng mang hiệu quả trong lập trình rất lớn, chỉ những lập trình viên lâu năm sẽ nhận ra điều này khi xây dựng phần mềm thương mại.

DotNet mới bây giờ ra quá nhiều kiễu dữ liệu nhưng làm cho việc lập trình trỡ nên rối rắm với những lập trình viên mới vào nghề cũng như mới bắt đầu nghiên cứu về c#.

  1. Cách khai báo biến kiểu DataTable
  2. Cách khai báo cột kiểu DataColumn và có sử dụng Expression vào DatatTable
  3. Cách sử dụng DataView để tạo bộ lọc và sắp xếp, distinct (nhóm dữ liệu)

  • Cách khai báo biến kiểu DataTable

Để sử dụng được biến kiểu DataTable cần dùng namespace System.Data ;

Cách khai báo biến

DataTable Ten_BIEN = new DataTable();

* Ten_BIEN đặt tùy biến ko dấu cách, ko ký tự đặc biệt

Biến DataTable để làm gì ?

 - Chứa đựng giá trị từ file text (ít lập trình viên sử dụng), xml (cấu trúc chặc chẽ), Excel, từ CSDL Access, CSDL SQL Server, Oracle...

Ví dụ 1: tạo biến DataTable đơn giản và thêm dữ liệu vào cho biến.

// khai báo biến dt kiểu DataTable
DataTable dt = new DataTable();
// thêm cột vào biến dt
dt.Columns.Add("Ma", typeof(int));
dt.Columns.Add("Ten", typeof(string));
// thêm giá trị vào biến DataTable cách 1
dt.Rows.Add(1, "Tran A");
dt.Rows.Add(2, "Tran B");
// thêm giá trị vào biến DataTable cách 1 (lần 1)
DataRow drAdd_01 = dt.NewRow();
drAdd_01["Ma"] = 3;
drAdd_01["Ten"] = "Le C";
dt.Rows.Add(drAdd_01);
// thêm giá trị vào biến DataTable cách 1 (lần 2)
DataRow drAdd_02 = dt.NewRow();
drAdd_02["Ma"] = 3;
drAdd_02["Ten"] = "Le C";
dt.Rows.Add(drAdd_02);
//cách lấy tổng dòng trong DataTable
int tongsodong = dt.Rows.Count;
//cách lấy giá trị 1 ô trong DataTable
string gt_dong1_cot2 = dt.Rows[0][1].ToString();
string gt_dong1_cot1 = dt.Rows[0]["Ma"].ToString();
//  -> dòng đầu tiên trong DataTable là 0
//     Cột lất có thể là chỉ số hay là tên cột
string ds_Cot_Ma = "";
for (int i = 0; i < tongsodong; i++)
{
    ds_Cot_Ma += dt.Rows[i]["Ma"].ToString() + " ";
}
string ds_Cot_Ten = "";
foreach (DataRow drGet in dt.Rows)
{
    ds_Cot_Ten += drGet["Ten"].ToString() + " ";
}    
Console.WriteLine("Hello, World!");

Thêm cột dt.Columns.Add("Ten");  // không có gán kiểu thì mặc định là kiểu strig

  • Cách khai báo biến kiểu DataTable có sử dụng thêm DataColumn

 

Ví dụ 2: tạo biến DataTable có dùng thêm biến DataColumn

Sử dụng DataColumn để thêm vào DataTable, có sử dụng Expression để tính

  DataTable dt = new DataTable();
 // biến kiểu DataColumn
 DataColumn cl_1 = new DataColumn("STT", typeof(int));           
 DataColumn cl_2 = new DataColumn("HoTen", typeof(string));
 DataColumn cl_3 = new DataColumn("Lop", typeof(string));
 DataColumn cl_4 = new DataColumn("Toan", typeof(int));
 DataColumn cl_5 = new DataColumn("Ly", typeof(int));
 DataColumn cl_6 = new DataColumn("Tong", typeof(int),"Toan+Ly");
 DataColumn cl_7 = new DataColumn("DiemTB", typeof(double), "(Toan+Ly)/2");
 DataColumn cl_8 = new DataColumn("XepLoai", typeof(string), "iif(DiemTB>=8,'Gioi','Kha' ) ");

 //            
 dt.Columns.Add(cl_1);  //dt.Columns.Add("STT",typeof(int));
 dt.Columns.Add(cl_2);
 dt.Columns.Add(cl_3);
 dt.Columns.Add(cl_4);
 dt.Columns.Add(cl_5);
 dt.Columns.Add(cl_6);
 dt.Columns.Add(cl_7);
 dt.Columns.Add(cl_8);
 //
 dt.Rows.Add(1,"A","Lop A",5,7);
 dt.Rows.Add(2, "B", "Lop A", 8, 9);
 dt.Rows.Add(3, "C", "Lop B", 8, 2);
 dt.Rows.Add(4, "D", "Lop B", 8, 9);
 dt.Rows.Add(5, "E", "Lop C", 8, 9);

  • Cách sử dụng DataView trong DataTable để lọc, sắp xếp, nhóm dữ liệu

 // sử dụng Compute
 int tong = Convert.ToInt16( dt.Compute("SUM(Tong)","") );
 int tong_XepLoai_Kha = Convert.ToInt16( dt.Compute("SUM(Tong)", "XepLoai='Kha'") );

 // lọc các bảng ghi có xếp loại khác kiểu trả về là DataRow
 DataRow[] drArrXepLoai_Kha = dt.Select("XepLoai='Kha'");

 // lọc các bảng ghi có xếp loại khá, vàtheo cột DiemTB giảm dần sắp xếp  kiểu trả về là DataTable
 DataView dv = dt.DefaultView;
 dv.RowFilter = "XepLoai='Kha'";
 dv.Sort = "DiemTB DESC";
 DataTable dt_HS_Kha = dv.ToTable();


 dv.RowFilter = "";
 DataTable dtLop= dv.ToTable(true, "Lop");
 

  • Cách sử dụng Select trong DataTable để lọc dữ liệu

DataTable dt= new DataTable();
dt.Column.Add("TT",typeof(string));
dt.Column.Add("Ten",typeof(string));
dt.Column.Add("Lop",typeof(string));
dt.Row.Add("1","Tran Van A","Lop 1B");
dt.Row.Add("2","Tran Van B","Lop 1C");
dt.Row.Add("3","Tran Van H","Lop 1C");
// Select luôn trả về 1 array kiểu DataRow

DataRow[] dr_all =dt.Select();
DataRow dr_0 =dt.Select("TT='1'")[0];
DataRow[] dr_Lop1C =dt.Select("Lop='Lop 1C'");
foreach(DataRow dr_i in dr_Lop1C)
{

}

 

 

 Trong C# hay sử dụng Distinct DataTable C# như trong SQL Server để nhóm dữ liệu

 DataTable dtLop= dv.ToTable(true, "Lop");