在C#中,DataRow和Rows是什么区别?

DataSet /DataTable/Tables/DataRow和Rows的区别是什么?

首先这些都是C#的类,也就是对象。
他们分别是上一级的成员对象,举个形象的例子

dataset是数据集,他内部可以包含多个datatable对象和数据集本身的信息。就像学校。
datatable是数据表,他内部包含多个datarow对象 ,就像是班级,
datarow 是数据行对象,他内部有包含多个数据列。 就像是某个班级里座位的行

而 tables就是 dataset里的数据表datatable对象集合。 好比说学校里的班级,这个班级是个集合。
同理rows就是table里的datarows对象集合,好比某个班级里的所有座位行,这个行是个集合。

研究起来就是,学校(dataset)里的班级(tables)中某个班级(table)中有很多行座位(rows),其中一行座位(datarow)中的第三位坐了一个美女(dataset.tables[1].rows[1][2])。

希望你能明白追问

最后这一句代码还是没有懂,比如我有一个表,学生信息表studentinfo:里面包括学生id、name、age、sex。那我可以认为这是一个table,这个表分别有:
1、张三、20、男,
2、李四、21、女,
3、王五、20、男;这三条数据。
那么这三条数据就分别是daterow集合里面的rows,而表示id为1学生的姓名张三:就是table[0].rows[1],对吗?

追答

对的, 取某行数据的具体值

比如姓名

其实是 table[0].rows[0]["name"];

上边的最后“name”实际上是 dataset中tables中的第一个table 中的第一行中的第【“name”】列
而这个 ["name"]也可以换成[1]因为 C#集合的索引是从0开始,而name是第二列,所以可以是
table[0].rows[0][1]=="张三";

而为什么 rows后边跟了两个中括号呢?
是因为 tables 中table是一个复合类,
通过dataset.tables[0] 取到的是一个table对象,他不是一个集合,不能通过中括号索引的方式进一步取行数据

而 table[0].rows[0] 后边为什么可以再跟个中括号呢?table[0].rows[0][1]

是因为table[0].rows[0] 取到的是具体某个datarow对象 而datarow对象整体就是一个集合。

后边跟个中括号是取这个集合的某个数据。比如table[0].rows[0][1] 就是取table[0].rows[0]中的第二个数据

温馨提示:内容为网友见解,仅供参考
无其他回答

在C#中,DataRow和Rows是什么区别?
datatable是数据表,他内部包含多个datarow对象 ,就像是班级,datarow 是数据行对象,他内部有包含多个数据列。 就像是某个班级里座位的行 而 tables就是 dataset里的数据表datatable对象集合。 好比说学校里的班级,这个班级是个集合。同理rows就是table里的datarows对象集合,好比某个班级里的所有座位...

c#中关于datatable的datarow和datacolumn区别
具体区别如下:1、DataTable:表示内存中数据的一个表。公共属性 Columns 获取属于该表的列的集合。DataSet 获取此表所属的 DataSet。DefaultView 获取可能包括筛选视图或游标位置的表的自定义视图。PrimaryKey 获取或设置充当数据表主键的列的数组。Rows 获取属于该表的行的集合。TableName 获取或设置 Data...

C#关于DataSet,DataTable,DataRow 和DataColumn的区别和用法
Rows 获取属于该表的行的集合。TableName 获取或设置DataTable的名称。

c#中关于Dataset,datarow的数据访问问题
DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可用的,DataSet在内部是用XML来描述数据的,由于XML是一种与平台无关、与语言无关的数据描述语言,而且可以描述复杂关系的数据,比...

C#关于DataSet,DataTable,DataRow 和DataColumn的区别和用法
DataRow是DataTable的行 DataColumn是DataTable的列 \/\/实例化一个DataSetDataSet ds=new DataSet\/\/实例化一个DataTableDataTable dt=new DataTable();\/\/把dt添加到ds中ds.Tables.Add(dt);\/\/给dt添加两列dt.Columns.Add(new DataColumn("col1",typeof(string)));dt.Columns.Add(new DataColumn("...

C# 遍历datatable 比较textbox中的值,,是否重复
假设textbox的数值对应到DataTable的列 COL1 上 DataRow[] rows=dt.Select("COL1="+textbox.Text.Trim())如果是字符型用("COL1='"+textbox.Text.Trim()+"'")rows表示已经有相同值的行数.rows为0表示没有此行数据.rows>0表示已经存在这个值 ...

C# DataRow问题
DataRow 是用来表示一个数据表的的数据行,所以,它不能单独new,因为一行记录,需要有架构(架构就是描述这一行都有哪些列,分别是什么数据类型,甚至索引字段是哪个,有无约束等)。所以DataRow有需要在有架构的情况下,才可以创建。所以,你必须要先构造一个DataTable,然后才能在相应的DataTable上...

c# 通过Datatable对象,遍历这个对象中DataRowCollection中的数据
这是遍历一行数据 foreach (object obj in table.Rows[0].ItemArray){ } DataRowcollection 是一个集合,table.Rows 就是DataRowcollection 对象。。。foreach (Datarow dr in table.Rows){ }

C#中 Delete 的使用是 : Datatable.Rows[i].Delete(); row什么意思
Rows是DataTable所有行的集合 你那句代码等价于 DataRow dr = Datatable.Rows[i]; dr.Delete();

c#.net语句e.Row.RowType == DataControlRowType.DataRow是什么...
e.Row.RowType 是指当前行的类型 DataControlRowType 是GridView的行的类型集合 其中的DataRow是数据绑定行 这个判断语句的意思就是判断当前行是不是数据绑定行 是绑定时候用来过滤标题行和序号行等等非数据绑定行的 具体的可以在msdn上查找DataControlRowType 看 ...

相似回答