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

如何用更简洁的LINQ实现对象列表多字段的集合合并?

用LINQ简化代码的方案

当然可以用LINQ写出更简洁的代码,核心是利用SelectMany操作符将每个MyClass对象的两个字段展开为单个序列,再转换为列表:

var list = src.SelectMany(item => new[] { item.Field1, item.Field2 }).ToList();

代码说明

  • SelectMany会遍历src中的每个MyClass对象,将每个对象投影为包含Field1和Field2的int数组
  • 所有投影出来的数组会被自动扁平化,合并成一个连续的int序列
  • 最后调用ToList()将这个序列转换为List<int>,结果和原foreach循环完全一致,内容为0, 1, 2, 3

如果想拆分逻辑更清晰,也可以用链式调用结合Concat,但这种写法会遍历src两次,性能略低于SelectMany的单次遍历,仅作备选:

var list = src.Select(item => item.Field1)
              .Concat(src.Select(item => item.Field2))
              .ToList();

内容的提问来源于stack exchange,提问作者PRR S2 6-8-6 turbine engine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 12:06:13