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

C#实现未知层级嵌套List<double[]>的扁平化方法

通用嵌套List<double[]>扁平化实现

要处理任意层级的嵌套List结构,核心思路是递归遍历+类型判断,通过统一的入口参数类型兼容所有嵌套层级,再逐层拆解直到找到目标double[]元素。

实现代码

public static List<double[]> FlattenNestedList(object dataSource)
{
    var result = new List<double[]>();
    
    // 处理最基础的情况:直接传入double[]
    if (dataSource is double[] array)
    {
        result.Add(array);
        return result;
    }
    
    // 处理可枚举类型(包含所有层级的List)
    if (dataSource is IEnumerable enumerable)
    {
        foreach (var item in enumerable)
        {
            // 递归处理每个子元素,合并结果
            result.AddRange(FlattenNestedList(item));
        }
    }
    
    // 可选:处理非预期输入的情况
    else
    {
        throw new ArgumentException("数据源包含非预期类型,仅支持嵌套List<double[]>结构");
    }
    
    return result;
}

使用示例

不管数据源是多少层嵌套,直接按需求调用即可:

// 示例:三层嵌套的测试数据
var nestedData = new List<List<List<double[]>>>
{
    new List<List<double[]>>
    {
        new List<double[]> { new double[] {1,2}, new double[] {3,4} },
        new List<double[]> { new double[] {5,6} }
    }
};

List<double[]> flattenData = FlattenNestedList(nestedData);

核心逻辑说明

  1. 参数类型设计:用object作为输入参数,兼容所有层级的嵌套List(所有List都是object的子类);
  2. 递归拆解:
    • 优先判断当前对象是否为目标类型double[],是则直接加入结果集;
    • 若为IEnumerable(所有List都实现该接口),则遍历每个子元素并递归调用自身处理;
    • 最终合并所有递归返回的结果,得到扁平化列表;
  3. 兼容性:无论嵌套层级是1层、2层还是N层,只要结构是嵌套List+最终double[],都能正确处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:31:06