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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:54:04