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
相关产品推荐
相关产品推荐

