如何用C# Linq将嵌套父子集合扁平化生成目标匿名类集合
实现方案
方案1:使用LINQ的SelectMany(推荐)
这是最简洁的实现方式,需先引入System.Linq命名空间。
前提说明:你提供的classA代码中嵌套的List<classB>未写属性名,以下示例假设该属性名为BList,请替换为你实际的属性名即可。
using System.Linq; // 扁平化核心逻辑 var flattenList = obj.SelectMany(classAItem => classAItem.BList.Select(classBItem => new { classAItem.vCode, classAItem.sCode, classAItem.regional, classBItem.amount, classBItem.aCode, classBItem.status }) ).ToList();
SelectMany是.NET专门用于展开嵌套集合的方法,会自动遍历外层List<classA>的所有元素,再遍历每个元素内部的List<classB>,将两个层级的属性组合为你需要的匿名类后,合并为一个扁平的集合,输出结果和你要求的结构完全一致。
方案2:传统双层循环实现
如果你不想依赖LINQ,可以用基础循环实现:
// 接收结果的集合,也可以自定义强类型类代替匿名类/object var flattenList = new List<object>(); foreach (var aItem in obj) { foreach (var bItem in aItem.BList) { flattenList.Add(new { aItem.vCode, aItem.sCode, aItem.regional, bItem.amount, bItem.aCode, bItem.status }); } }
注意事项
如果你需要将扁平化后的结果在当前方法外传递使用,建议定义专门的强类型实体类替代匿名类,避免匿名类只能在当前方法作用域使用的限制。
内容的提问来源于stack exchange,提问作者Blishton
相关产品推荐
相关产品推荐

