将Datatable转换为多维数组

7

有没有一种简单的方法将Datatable转换为多维字符串数组?

也许可以使用LINQ

一定有比手动循环所有列/行更好的方法...


1
循环有很好的理由,参见http://stackoverflow.com/questions/8918157/how-do-i-convert-a-resultset-in-a-list-of-hashtable/8918431#8918431。 - Miserable Variable
你不觉得在转换期间需要循环遍历所有记录吗? - rerun
3个回答

8

Linq就是答案。您可以使用AsEnumerable方法将DataTable转换为IEnumerable类型,然后使用ToArray()将其转换为数组。

var tableEnumerable = DataTableName.AsEnumerable();
tableArray = tableEnumerable.ToArray();

2
抱歉,我以前从未使用过LINQ。我遇到了这个错误 Cannot implicitly convert type 'System.Data.DataRow[]' to 'string[*,*]'。任何帮助都将不胜感激。 - Greg
你在我给你的那一行代码上遇到了错误吗? 如果是的话,你能把它分成不同的部分(enumerable = DataTable.AsEnumerable(); tableArray = enumerable.ToArray();)看看它是否仍然有相同的反应。 - Gabriel GM
@Greg 我遇到了同样的错误,即使将其拆分成多行也是如此。你解决了吗? - Rachel
1
@Rachel 是的,尝试这样做:var foo = dt.AsEnumerable().Select(x => x.ItemArray).ToArray(); - Greg

4

yourTable.AsEnumerable().Select(row => row.ItemArray).ToArray()

可以将数据表转换为数组,其中每一行是一个数组。

0

尝试 dt.Rows.Cast().Select(//将datarow转换为字符串)


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