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

使用Linq从包含子列表的嵌套列表生成新列表

用LINQ处理嵌套列表的几种常见方案

嘿,我懂你这种“知道要处理但一时说不准具体怎么转”的感觉!先把你给出的结构再明确下,方便后续代码示例:

首先是a类的定义:

public class a 
{ 
    public int Number { get; set; } 
    public SomeClass SomeClass { get; set; } 
}

// 假设SomeClass是这样的(如果实际结构不同,你可以对应调整)
public class SomeClass
{
    public int Id { get; set; }
    public string Name { get; set; }
}

你的嵌套列表结构大概是:

List<List<a>> nestedList = new List<List<a>>
{
    new List<a> { new a(), new a(), new a(), new a() },
    new List<a> { new a(), new a(), new a() },
    // ... 其他子列表
};

下面是几种常见的LINQ处理场景,你可以按需选用:

1. 扁平化嵌套列表(把所有子列表的元素合并成一维列表)

这是最基础的需求,用SelectMany可以直接把嵌套结构“拍平”:

List<a> flattenedList = nestedList.SelectMany(subList => subList).ToList();

解释:SelectMany会遍历每个子列表,然后把所有子列表里的a对象都收集到一个新的一维列表里。

2. 提取所有a对象的Number属性,生成整数列表

如果只需要每个a的Number值,在扁平化后加个Select就行:

List<int> allNumbers = nestedList.SelectMany(subList => subList)
                                 .Select(item => item.Number)
                                 .ToList();

3. 按SomeClass的某个属性分组

比如想把所有a对象按SomeClass.Id分组,得到以Id为键、对应a对象列表为值的字典:

Dictionary<int, List<a>> groupedById = nestedList.SelectMany(subList => subList)
                                                 .GroupBy(item => item.SomeClass.Id)
                                                 .ToDictionary(g => g.Key, g => g.ToList());

4. 筛选符合条件的a对象

比如只保留Number大于5的a对象:

List<a> filteredList = nestedList.SelectMany(subList => subList)
                                 .Where(item => item.Number > 5)
                                 .ToList();

5. 对子列表单独处理后再合并

比如每个子列表只取Number最大的那个a对象,然后组成新列表:

List<a> maxNumberPerSubList = nestedList.Select(subList => subList.OrderByDescending(item => item.Number).First())
                                        .ToList();

如果子列表可能为空,记得加FirstOrDefault()避免报错哦。

如果你的需求更具体(比如要生成的新列表是某种聚合结果、或者按其他规则转换),可以补充说明细节,我再帮你调整代码~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:52:58