DataSet 图解

DataSet 图解

DataSet层次结构中的类请参见表所示:

说明
DataTableCollection
包含特定数据集的所有DataTable对象
DataTable
表示数据集中的一个表
DataColumnCollection
表示DataTable对象的结构
DataRowCollection
表示DataTable对象中的实际数据行
DataColumn
表示DataTable对象中列的结构
DataRow
表示DataTable对象中的一个数据行
//多表多行多列的情况
foreach (DataTable dt in YourDataset.Tables) //遍历所有的datatable
{
foreach (DataRow dr in dt.Rows) ///遍历所有的行
foreach (DataColumn dc in dt.Columns) //遍历所有的列
Console.WriteLine(“{}, {}, {}”, dt.TableName, dc.ColumnName, dr[dc]); //表名,列名,单元格数据
}
//遍历一个表多行多列
foreach(DataRow mDr in dataSet.Tables[].Rows )
{
foreach(DataColumn mDc in dataSet.Tables[].Columns)
{
Console.WriteLine(mDr[mDc].ToString());
}
}
//遍历一个表多行一列
foreach(DataRow row in DataSet1.Tables[].Rows)
{
Console.WriteLine(row[].ToString());
} //一行一列
ds.Tables[].Rows[]["字段"]

关于DataTableCollection

关于DataTable

关于DataColumnCollection

DataColumnCollection      问题一:

一是DataColumnCollection是怎么被DataTable类实例化的?因为我无法用new直接实例化它,这种现象普遍存在于.NET中。
二是DataColumn中的Table字段是只读的(定义中只有get,无set)那么,当我new了一个DataColumn时,这个
DataColumn的Table字段是NULL,为什么当由DataTable.Columns.Add()添加后,DataColumn.Table
字段被赋值了,怎么做到的?

DataColumnCollection        回答一:
1.扩展方法,当你用扩展方法去获取DataTable中的列集合,就会返回一个DataColumnCollection类型
2.DataColumn中的Table字段,表示它的父控件,也就是它是属于哪一个DataTable
搜一搜:属性
属性其实是个函数(get,set),它并不是一个变量,所以也不存在什么时候赋值.你什么时候去取值,就会调用函数去对应的地方取,取不到就是null呗
DataColumnCollection         回答一:
datatable初始化时创建的
this.columnCollection = new DataColumnCollection(this);
DataColumnCollection初始化时,table就被传入了
C# code?
1
2
3
4
5
6
7
8
9
10
internal DataColumnCollection(DataTable table)
{
    this._list = new ArrayList();
    this.defaultNameIndex = 1;
    this.columnsImplementingIChangeTracking = DataTable.zeroColumns;
    this.table = table;
    this.columnFromName = new Hashtable();
}
 
  

关于DataRowCollection

关于DataColumn

关于DataRow

上一篇:Python推荐算法学习1


下一篇:leetcode(js)算法10之正则表达式匹配