如何添加到第一个数组元素
本文关键字:第一个 数组元素 添加 何添加 | 更新日期: 2023-09-27 18:05:47
我有一组sql查询的结果,我在一个数据表中填充:
adapter.Fill(dt);
然后我将dt转换为数组:
string[][] mergeBlockData =
dt.Rows
.OfType<DataRow>().Select(r => dt.Columns.OfType<DataColumn>()
.Select(c => r[c.ColumnName].ToString())
.ToArray())
.ToArray();
我还想在第一个数组元素中添加列名。如何?
这是硬编码时的mergeBlockData
string[][] mergeBlockData = new string[][] {
new string[] { "connection_number", "connection_duration", "fee" },
new string[] { "7777", "3:15", "€ 10.0" },
new string[] { "6666", "23:15", "€ 20.0" },
new string[] { "5555", "13:15", "€ 30.0" },
new string[] { "8888", "83:15", "€ 40.0" } };
EDIT(需求更改后):
试试这个:
string[][] mergeBlockData =
new List<string[]>{ dt.Columns.OfType<DataColumn>().Select(dc => dc.ColumnName).ToArray() }.Concat(
dt.Rows.OfType<DataRow>()
.Select(
r => dt.Columns.OfType<DataColumn>()
.Select(c => r[c.ColumnName].ToString()).ToArray()
)
)
.ToArray();
错误"A column named ' ' already belongs to this DataTable."
来自于DataTable的创建,而不是字符串表示的创建。
确保DataTable只构建一次,并且列名中没有重复项。
为了正确地创建字符串表示,您可以在Rows上循环:
string[][] stringRepresentation = new string[dt.Rows.Count][];
for(int i = 0 ; i < dt.Rows.Count ; ++i)
stringRepresentation[i] = dataTable.Rows[i].ItemArray.Select(x => x.ToString()).ToArray();