如何添加到第一个数组元素

本文关键字:第一个 数组元素 添加 何添加 | 更新日期: 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();