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

如何用Lambda/LINQ将对象列表中的嵌套列表合并为单个列表

使用LINQ/Lambda实现嵌套列表的筛选合并

针对你需求的筛选合并功能,用LINQ可以非常简洁地实现,以下是几种可行方案:

最健壮的写法(处理Strings为null的情况)

List<string> strings = Xis
    .Where(x => x.Strings != null && x.Strings.Any())
    .SelectMany(x => x.Strings)
    .ToList();

代码说明:

  • Where(x => x.Strings != null && x.Strings.Any()):先过滤掉Strings为null或空列表的X对象,避免空引用异常
  • SelectMany:LINQ的扁平化方法,会把每个符合条件的x.Strings中的元素逐一提取,合并成一个连续的序列
  • ToList():将最终的序列转换为List<string>,和你原来foreach实现的结果完全一致

简化写法(确定Strings永远不为null时)

如果能保证所有X对象的Strings属性不会为null,只需要判断列表是否有元素,可以简化为:

List<string> strings = Xis
    .Where(x => x.Strings.Any())
    .SelectMany(x => x.Strings)
    .ToList();

查询表达式风格写法

如果你习惯LINQ查询表达式的语法,也可以这样写:

List<string> strings = (from x in Xis
                        where x.Strings != null && x.Strings.Any()
                        from s in x.Strings
                        select s).ToList();

对比原foreach实现

这些LINQ写法属于声明式编程,你只需要描述"要筛选什么、要合并什么",不需要手动管理集合的添加逻辑,代码更简洁易读,同时也保留了原逻辑的功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:32:48