前言
在 .NET 中,可將DataTable類充當(dāng)管理內(nèi)存中數(shù)據(jù)的基本組件。無論是在處理簡單的數(shù)據(jù)集或復(fù)雜的關(guān)系結(jié)構(gòu),都能提供一種多功能的解決方案,輕松實(shí)現(xiàn)添加、編輯和刪除行等操作。在本文中,我們一起了解DataTable,并使用示例來探討其相關(guān)操作。
DataTable
DataTable?是 C# .NET 中 System.Data 命名空間的一部分,提供內(nèi)存中數(shù)據(jù)以表格的形式表示。是一個(gè)由行和列組成的二維表,此結(jié)構(gòu)非常適合需要在將數(shù)據(jù)保存到數(shù)據(jù)庫或在用戶界面中顯示數(shù)據(jù)之前處理數(shù)據(jù)的情況。
1、常用屬性
CaseSensitive:指示表中的字符串比較是否區(qū)分大小寫;
Columns:獲取屬于表的列的集合;
DefaultView:獲取可能包括篩選視圖或游標(biāo)位置的表的自定義視圖;
Rows:獲取屬于表的行的集合;
TableName:獲取或設(shè)置DataTable的名稱;
2、常用方法
Clear:清除 DataTable 的所有數(shù)據(jù);
Clone:克隆 DataTable 的結(jié)構(gòu),包括表所有的架構(gòu)和約束;
BeginInit:開始初始化;
EndInit:結(jié)束初始化;
ImportRow:?將 DataRow 復(fù)制到表DataTable中,保留任何屬性設(shè)置以及初始值和當(dāng)前值;
Merge?將指定的 DataTable 與當(dāng)前的 DataTable 合并;
NewRow?創(chuàng)建與該表具有相同架構(gòu)的新DataRow;
使用示例
1、創(chuàng)建 DataTable 結(jié)構(gòu)
#region 創(chuàng)建表對象
// 首先創(chuàng)建表對象,并將其命名為Employee
DataTable employeeTable = new DataTable("Employee");
/* 或使用下面方式創(chuàng)建
DataTable employeeTable = new DataTable();
employeeTable.TableName ="Employee";
*/
#endregion
#region 為表添加列
employeeTable.Columns.Add("ID", typeof(int));
employeeTable.Columns.Add("Name", typeof(string));
employeeTable.Columns.Add("Position", typeof(string));
employeeTable.Columns.Add("Salary", typeof(decimal));
/* 或用此方式添加列
DataColumn nameColumn = new DataColumn();
nameColumn.DataType= typeof(string);
nameColumn.MaxLength = 100;
employeeTable.Columns.Add(nameColumn);
*/
#endregion
2、為 DataTable 添加行
// 創(chuàng)建空行
DataRow newRow = employeeTable.NewRow();
// 對行列賦值
newRow["ID"] = 10;
newRow["Name"] = "羅小剛";
newRow["Position"] = "軟件工程師";
newRow["Salary"] = 10000.00m;
// 將行添加到表中
employeeTable.Rows.Add(newRow);
3、篩選 DataTable 行
// 根據(jù) ID 列篩選行數(shù)據(jù)
DataRow[] rows = employeeTable.Select("ID = 10");
// 篩選 Name 列值中以"羅"開頭的行的集合(模糊查詢),如果有多個(gè)篩選條件,可以加 and 或 or
DataRow[] rows = employeeTable.Select("Name like '羅%'");
4、修改 DataTable 的行數(shù)值
DataRow[] rows = employeeTable.Select("ID = 10");
if (rows.Length > 0)
{
? ?// 修改 Salary 值
? ?rows[0]["Salary"] = 12000.00m;
}
5、刪除 DataTable 中行
// 根據(jù) ID 列篩選行數(shù)據(jù)
DataRow[] rows = employeeTable.Select("ID = 10");
// 判斷篩選
if (rows.Length > 0)
{
? ?// 直接刪除
? ?employeeTable.Rows.Remove(rows[0]);
? ?// 將行標(biāo)記為 deleted
? ?rows[0].Delete();
? ?// 接受刪除變更
? ?employeeTable.AcceptChanges();
}
6、復(fù)制 DataTable 結(jié)構(gòu)或數(shù)據(jù)
// 復(fù)制表,同時(shí)復(fù)制了表結(jié)構(gòu)和表中的數(shù)據(jù)
DataTable ?newTable = employeeTable.Copy();
// 清空表數(shù)據(jù)
newTable.Clear();
// 克隆表,只是復(fù)制了表結(jié)構(gòu),不包括數(shù)據(jù)
DataTable cloneTable = employeeTable.Clone();
// 將 employeeTable 第一行數(shù)據(jù)導(dǎo)入cloneTable表
cloneTable.ImportRow(employeeTable.Rows[0]);
7、對 DataTable 排序
// 獲取表視圖
DataView employeeView = employeeTable.DefaultView;
// 按 ID 列倒序排序
employeeView.Sort = "ID DESC";
//轉(zhuǎn)為表
employeeView.ToTable();
小結(jié)
以上,我們探討了DataTable?方法、屬性和基本操作,并簡單示例描述其應(yīng)用。借助 DataTable 的靈活性和功能,我們可以有效地管理各種應(yīng)用程序的內(nèi)存數(shù)據(jù)結(jié)構(gòu),從簡單的數(shù)據(jù)操作任務(wù)到更復(fù)雜的數(shù)據(jù)庫交互。
該文章在 2024/11/13 14:52:54 編輯過