我想创建一个锯齿状数组,如下所示:
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
转换为锯齿状数组?
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;