清理你的 C# 循环:使用 LINQ SelectMany 展平嵌套集合

发布: (2026年1月1日 GMT+8 02:42)
2 分钟阅读
原文: Dev.to

Source: Dev.to

介绍

你是否曾经处理过列表中的列表,并且为了获取数据而写出杂乱的嵌套 foreach 循环?在 C# 中,.SelectMany 操作符提供了一种优雅的方式来展平这些嵌套集合,使其成为单一、可用的流。

传统做法

var allItems = new List();
foreach (var order in orders)
{
    foreach (var item in order.LineItems)
    {
        allItems.Add(item);
    }
}

这能工作,但代码冗长,阅读时不够直观。

使用 SelectMany

var allItems = orders.SelectMany(o => o.LineItems).ToList();

SelectMany 会遍历每个父对象,获取其子集合,并将其展开为单个序列。

好处

  • 可读性 – 你描述的是想要做什么,而不是如何循环
  • 可链式调用 – 你可以在 .SelectMany 之后立即添加 .Where().OrderBy() 或其他 LINQ 操作符,以进一步细化数据,而无需再添加循环。

如果你正从循环密集的风格转向 .NET 中更函数式的写法,SelectMany 将是你经常会用到的工具!

Back to Blog

相关文章

阅读更多 »