DataTable 的用法简介
先看示例代码:
// Put the next line into the Declarations section. private System.Data.DataSet dataSet; private void MakeDataTables() { // Run all of the functions. MakeParentTable(); MakeChildTable(); MakeDataRelation(); BindToDataGrid(); } private void MakeParentTable() { // Create a new DataTable. System.Data.DataTable table = new DataTable( "ParentTable" ); // Declare variables for DataColumn and DataRow objects. DataColumn column; DataRow row; // Create new DataColumn, set DataType, // ColumnName and add to DataTable. column = new DataColumn(); column.DataType = System.Type.GetType( "System.Int32" ); column.ColumnName = "id" ; column.ReadOnly = true ; column.Unique = true ; // Add the Column to the DataColumnCollection. table.Columns.Add(column); // Create second column. column = new DataColumn(); column.DataType = System.Type.GetType( "System.String" ); column.ColumnName = "ParentItem" ; column.AutoIncrement = false ; column.Caption = "ParentItem" ; column.ReadOnly = false ; column.Unique = false ; // Add the column to the table. table.Columns.Add(column); // Make the ID column the primary key column. DataColumn[] PrimaryKeyColumns = new DataColumn[1]; PrimaryKeyColumns[0] = table.Columns[ "id" ]; table.PrimaryKey = PrimaryKeyColumns; // Instantiate the DataSet variable. dataSet = new DataSet(); // Add the new DataTable to the DataSet. dataSet.Tables.Add(table); // Create three new DataRow objects and add // them to the DataTable for ( int i = 0; i<= 2; i++) { row = table.NewRow(); row[ "id" ] = i; row[ "ParentItem" ] = "ParentItem " + i; table.Rows.Add(row); } } private void MakeChildTable() { // Create a new DataTable. DataTable table = new DataTable( "childTable" ); DataColumn column; DataRow row; // Create first column and add to the DataTable. column = new DataColumn(); column.DataType= System.Type.GetType( "System.Int32" ); column.ColumnName = "ChildID" ; column.AutoIncrement = true ; column.Caption = "ID" ; column.ReadOnly = true ; column.Unique = true ; // Add the column to the DataColumnCollection. table.Columns.Add(column); // Create second column. column = new DataColumn(); column.DataType= System.Type.GetType( "System.String" ); column.ColumnName = "ChildItem" ; column.AutoIncrement = false ; column.Caption = "ChildItem" ; column.ReadOnly = false ; column.Unique = false ; table.Columns.Add(column); // Create third column. column = new DataColumn(); column.DataType= System.Type.GetType( "System.Int32" ); column.ColumnName = "ParentID" ; column.AutoIncrement = false ; column.Caption = "ParentID" ; column.ReadOnly = false ; column.Unique = false ; table.Columns.Add(column); dataSet.Tables.Add(table); // Create three sets of DataRow objects, // five rows each, and add to DataTable. for ( int i = 0; i <= 4; i ++) { row = table.NewRow(); row[ "childID" ] = i; row[ "ChildItem" ] = "Item " + i; row[ "ParentID" ] = 0 ; table.Rows.Add(row); } for ( int i = 0; i <= 4; i ++) { row = table.NewRow(); row[ "childID" ] = i + 5; row[ "ChildItem" ] = "Item " + i; row[ "ParentID" ] = 1 ; table.Rows.Add(row); } for ( int i = 0; i <= 4; i ++) { row = table.NewRow(); row[ "childID" ] = i + 10; row[ "ChildItem" ] = "Item " + i; row[ "ParentID" ] = 2 ; table.Rows.Add(row); } } private void MakeDataRelation() { // DataRelation requires two DataColumn // (parent and child) and a name. DataColumn parentColumn = dataSet.Tables[ "ParentTable" ].Columns[ "id" ]; DataColumn childColumn = dataSet.Tables[ "ChildTable" ].Columns[ "ParentID" ]; DataRelation relation = new DataRelation( "parent2Child" , parentColumn, childColumn); dataSet.Tables[ "ChildTable" ].ParentRelations.Add(relation); } private void BindToDataGrid() { // Instruct the DataGrid to bind to the DataSet, with the // ParentTable as the topmost DataTable. dataGrid1.SetDataBinding(dataSet, "ParentTable" ); } |
DataTable的一些属性,如:
DataTable dt = new DataTable();
dt.Columns.Add("Name",typeof(string));
//增加一列,列名为Name
DataRow dr = dt.NewRow();
dr["Name"] = "Spring Yang";
dt.Rows.Add(dr);
//增加一行;
dt.Rows.Remove(dr);
//删除一行;
dt.Cloumns.Remove("Name");
删除一列
DataTable dtnew = dt.Copy();
dtnew 指向的是dt所指向的内存地址,给dtnew操作也是对dt操作
只有这样:
DataTable dttwo = dt.Clone();
foreach(DataRow dr in dt.Rows)
{
DataRow newdr = dttwo.NewRow();
newdr.ItemArray = dr.ItemArray;
dttwo.Rows.Add(newdr);
}
再对dttwo操作就不会修改dt了.这应该是值类型和引用类型的区别吧.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架