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

如何用C# LINQ将Grouped列表转换为Normal列表(禁用循环)

用C# LINQ展平分组对象列表为普通对象列表

场景与类定义

现有以下分组结构的类:

public class Grouped
{
    public int Id { get; set; }
    public string GroupName { get; set; }
    public List<Item> Items { get; set; }
}

public class Item 
{ 
    public string ItemName { get; set; }
}

需要转换为的目标类Normal定义如下:

public class Normal
{
    public int Id { get; set; }
    public string GroupName { get; set; }
    public string ItemName { get; set; }
}

需求

仅使用C# LINQ实现转换,禁止使用foreach或for循环,将Grouped对象列表转换为Normal对象列表,每个Item对应一条Normal记录,继承所属分组的Id和GroupName。

转换后示例结果

IdGroupNameItemName
1AX
1AY
2BY
3CX
3CY
3CZ

解决方案

使用SelectMany方法展平嵌套的Items列表,同时映射每个Item为Normal对象:

// 假设已有Grouped对象列表
List<Grouped> groupedData = GetGroupedData();

List<Normal> result = groupedData
    .SelectMany(group => group.Items.Select(item => new Normal
    {
        Id = group.Id,
        GroupName = group.GroupName,
        ItemName = item.ItemName
    }))
    .ToList();

说明

  • SelectMany会遍历每个Grouped对象,将其内部的Items列表展开为单个序列
  • 对每个Item,创建对应的Normal对象,填充分组的Id、GroupName以及当前Item的ItemName
  • 最终得到的是展平后的Normal对象列表,完全符合需求格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:25:17