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

如何遍历字符串数组并将数据库查询结果正确填充到DataTable中

问题核心是循环中每次都对dt变量重新赋值,旧的查询结果会被直接覆盖,最终只保留最后一次ID对应的查询数据,可通过合并每次查询的DataTable结果修复:

string[] moodleIDs = this.moodleID.Split(',');
ScheduleToMoodleTemplate s = new ScheduleToMoodleTemplate();
DataTable dt = null;
           
foreach(var id in moodleIDs)
{
    DataTable tempDt = s.ScheduleToMoodleTemplateSelectByID(id);
    if (dt == null)
    {
        // 首次查询直接作为初始总表
        dt = tempDt;
    }
    else
    {
        // 后续查询结果合并到总表,要求每次返回的表结构完全一致
        dt.Merge(tempDt);
    }
}

gvEdit.DataSource = dt;
gvEdit.DataBind();

补充注意事项

  • 确保ScheduleToMoodleTemplateSelectByID方法每次返回的DataTable的列名、列类型完全一致,否则合并时会出现列重复或者类型不匹配报错
  • 如果需要对结果去重,可在合并完成后调用dt.DefaultView.ToTable(true, 列名1, 列名2...)方法实现去重
  • 如果业务允许,优先将查询方法改造成支持传入多个ID批量查询,减少数据库请求次数,性能会远优于循环单次查询

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:45:02