You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从SQL数据库查询结果构建锯齿数组?

解决方法

你之前的代码错在把整行数据拼成了单个字符串,没把每个字段值作为数组的独立元素。不用绕弯子,直接在读取数据库行的时候构建对应数组就行。

正确实现步骤

  • 循环读取数据库结果集的每一行
  • 对每行的每个字段,先判断是不是数据库里的缺失值(DBNull),非空就把字段值加到临时列表里
  • 把临时列表转成数组,添加到List<string[]>中
  • 最后直接把List<string[]>转成你要的锯齿数组string[][]

代码示例

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

// 假设reader是你的SqlDataReader实例,已经执行过查询
while (reader.Read())
{
    List<string> currentRow = new List<string>();
    
    // 遍历当前行的所有列
    for (int columnIndex = 0; columnIndex < reader.FieldCount; columnIndex++)
    {
        // 先判断字段是否为DBNull,避免调用GetString时抛出异常
        if (!reader.IsDBNull(columnIndex))
        {
            currentRow.Add(reader.GetString(columnIndex));
        }
        // 如果需要给缺失值留位置(用空字符串占位),取消下面的注释
        // else
        // {
        //     currentRow.Add(string.Empty);
        // }
    }
    
    // 将当前行的列值数组加入列表
    myList.Add(currentRow.ToArray());
}

// 直接把List转成目标锯齿数组
string[][] jaggedArray = myList.ToArray();

注意点

  1. 别直接用GetString判断null:数据库里的缺失值是DBNull,不是普通的null,直接调用GetString会报错,必须先用IsDBNull检查。
  2. 缺失值处理可选:要是想让数组长度和数据库列数一致,就取消注释用空字符串占位;要是不需要,直接跳过空字段,数组长度会自动匹配实际有值的字段数量。
  3. List转锯齿数组很简单:List<string[]>的ToArray()方法直接返回string[][],完全符合你要的格式。

内容的提问来源于stack exchange,提问作者Luci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 16:58:15