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

DataSet/DataTable/Tables/DataRow和Rows的区别是什么?... DataSet /DataTable/Tables/DataRow和Rows的区别是什么? 展开
 我来答
dengjun9452005
推荐于2017-09-21 · TA获得超过655个赞
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:183万
展开全部
首先这些都是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]中的第二个数据
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式