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

C#场景下如何添加并合并循环获取的新列表?

合并多级查询结果列表的解决方案

你已经走完了筛选非空ID的步骤,现在要把每个ID对应的子查询结果合并成一个完整列表对吧?这里有两种实用的实现方式,你可以根据场景选择:

方法一:循环+List.AddRange() 直观合并

这种方式逻辑清晰,适合需要在遍历过程中加额外操作(比如日志打印、数据校验)的场景:

// 初始化空列表用来存放所有合并后的结果
List<ExportDto> mergedResult = new List<ExportDto>();

foreach (var item in rowselect)
{
    // 获取当前ID对应的子列表
    var getnewlist = getnewinfo.GetSinglerows(item.Value);
    
    // 关键:防止GetSinglerows返回null导致空引用异常
    if (getnewlist != null)
    {
        // 把当前子列表的所有元素一次性追加到总列表
        mergedResult.AddRange(getnewlist);
    }
}

方法二:LINQ SelectMany() 简洁扁平化

如果不需要额外处理逻辑,用LINQ可以一行搞定,代码更紧凑:

// 用SelectMany直接把多个子列表"摊平"成一个集合
List<ExportDto> mergedResult = rowselect
    // 为每个ID获取子列表,空结果用空集合兜底避免报错
    .Select(item => getnewinfo.GetSinglerows(item.Value) ?? Enumerable.Empty<ExportDto>())
    // 合并所有子列表的元素
    .SelectMany(subList => subList)
    // 转成List<ExportDto>类型(按需选择)
    .ToList();

小提醒

  • 务必处理GetSinglerows返回null的情况,否则会触发NullReferenceException,上面两种方法都做了对应的兜底;
  • 如果你的查询是异步方法(比如GetSinglerowsAsync),可以用await Task.WhenAll配合SelectMany实现异步合并,逻辑和同步版本一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:31:28