如何根据 SQL 数据库的选择结果构造锯齿状数组?

问题描述 投票:0回答:1

我想创建一个锯齿状数组,如下所示:

string[][] jaggedarray = {
        new string[ ] {"1","fred", "test1", "test2", "test3", "test4"},
        new string[ ] { "2", "test2", "test2A" },
        new string[ ] {"3", "test3", "test3a", "test3b" },
    };

此数据位于数据库中,我通过运行选择来获取它。所以每一行可能有也可能没有数据。

我尝试过以下方法:

List<string[]> myList = new List<string[]>();

string r1 = $"{reader.GetString(0)}" + ";";
string r2 = $"{reader.GetString(1)}" + ";";
string r3 = $"{reader.GetString(2)}";
string r4 = reader.GetString(3) == null ? "" : ";" + $"{reader.GetString(3)}";
string r5 = reader.GetString(4) == null ? "" : ";" + $"{reader.GetString(4)}";

string resultset = r1 + r2 + r3 + r4 + r5;                                              

myList.Add(new string[] { resultset });

但是如何将数据放入如上所示的锯齿状数组中呢? 有没有办法可以将

myList
转换为锯齿状数组?

c# asp.net-core jagged-arrays
1个回答
0
投票

您可以尝试以下代码。

List<string[]> lists = new List<string[]>();

string connectionString = "Server=192.168.2.68;Database=test02;User Id=sa;Password=xxxxx;";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();

    string sql = "SELECT * FROM table01";
    using (SqlCommand command = new SqlCommand(sql, connection))
    {
        using (SqlDataReader reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                string r0 = reader.GetInt32(0).ToString();
                string r1 = reader.IsDBNull(1) ? "" : reader.GetString(1);
                string r2 = reader.IsDBNull(2) ? "" : reader.GetString(2);
                string r3 = reader.IsDBNull(3) ? "" : reader.GetString(3);
                string r4 = reader.IsDBNull(4) ? "" : reader.GetString(4); 
                string r5 = reader.IsDBNull(5) ? "" : reader.GetString(5);


                lists.Add(new string[] { r0, r1, r2, r3, r4, r5 });
            }
        }
    }
    connection.Close();
}

var length=lists.Count();
string[][] jaggedarray = new string[length][];

int i = 0;
foreach (string[] strings in lists)
{
    jaggedarray[i] = strings;
    i++;
}

var result = jaggedarray;

测试

© www.soinside.com 2019 - 2024. All rights reserved.