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

如何将List<MyData>转为以Id为键、Name逗号拼接为值的Dictionary<int,string>

解决List转Dictionary<int, string>(按Id分组拼接Name)

你当前使用ToLookup的分组逻辑是正确的,只需将值的处理逻辑从转列表改为拼接分组内的所有Name属性即可。

修改后的代码

var dict = lst.ToLookup(x => x.Id)
              .ToDictionary(x => x.Key, x => string.Join(", ", x.Select(item => item.Name)));

代码说明

  • ToLookup(x => x.Id):按Id对原列表进行分组,每个分组是包含相同Id的所有MyData对象的IGrouping<int, MyData>集合
  • string.Join(", ", x.Select(item => item.Name)):遍历当前分组的所有元素,提取Name属性,用, 作为分隔符拼接成字符串

完整可运行示例

public class MyData
{
    public int Id { get; set; }
    public string Name { get; set; }
}

// 初始化测试列表
List<MyData> lst = new List<MyData>();
lst.Add(new MyData { Id = 1, Name = "Test" });
lst.Add(new MyData { Id = 2, Name = "Test2" });
lst.Add(new MyData { Id = 1, Name = "Test3" });

// 执行转换
var dict = lst.ToLookup(x => x.Id)
              .ToDictionary(x => x.Key, x => string.Join(", ", x.Select(item => item.Name)));

// 输出验证
foreach (var kvp in dict)
{
    Console.WriteLine($"Dictionary<{kvp.Key}, \"{kvp.Value}\">");
}

输出结果

Dictionary<1, "Test, Test3">
Dictionary<2, "Test2">

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 18:43:18