一个datatable的单元格可以包含另一个datatable吗?

10

如果不是这个结构,我应该使用哪种结构?


1
正如你从回答中所看到的,人们很难理解你的意思。请详细说明你的问题。展示你试图做什么的伪代码将有所帮助。 - Alfred Myers
@Alfred,我完全同意你的观点。当人们不详细说明问题并等待他人理解他们的假设时,这确实让我感到困扰。我们不是算命师,对吧。 - Tarik
我想要嵌套的数据表格。必须阅读答案。 - programmernovice
4个回答

15
你可以向 DataTable 单元格中添加一个新的 DataTable。 简单示例:
定义具有一个单元格类型为 DataTable 的主表:
DataTable people = new DataTable();
people.Columns.Add("Name", typeof(string));
people.Columns.Add("Friends", typeof(DataTable));

定义子表:

DataTable friends = new DataTable();
friends.Columns.Add("Name", typeof(string));
friends.Columns.Add("Desire", typeof(string));

向子表添加一些数据:

friends.Rows.Add("Scarecrow", "brain");
friends.Rows.Add("Tin Woodman", "heart");
friends.Rows.Add("Cowardly Lion", "courage");

最后,向主表添加一行:

people.Rows.Add("Dorothy", friends);

要从主表获取子表,您需要将对象转换为 DataTable

DataTable output = (DataTable)people.Rows[0]["Friends"];

3

1
假设您想将其持久化到数据库,最好查看外键/DataRelation。如果您确实希望在单元格中拥有更结构化的数据,那么可能需要使用类似xml或其他序列化格式的东西。

(或者使用辅助键值表) - Robert Venables

0

1
我可能错了,但我认为OP指的是嵌套数据,而不是从行返回表格。 - Marc Gravell
这就是我所知道的 :) 你可以直接在这里找到相关信息: http://msdn.microsoft.com/en-us/library/system.data.datarow.table.aspx - Tarik
-1:你不能写 DataRow dr = new DataRow()。我相信 DataRow 的构造函数是 .Net 内部的,只能通过 DataTable.NewRow() 这样的方式访问,它返回一个新的 DataRow 并引用拥有表模式的所有者表。 - IAbstract

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接