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

如何使用LINQ将List<Dictionary<string,string>>转换为List<List<string>>

使用LINQ将List<Dictionary<string,string>>转换为List<List>

你可以通过嵌套的LINQ查询实现这个转换,核心逻辑是遍历外层列表中的每个字典,将字典的每一组键值对拼接成"键:值"格式的字符串,再把这些字符串收集为列表,最终组合成目标结构。

实现代码

// 原始数据(注意:C#标准Dictionary不允许重复键,示例中重复添加"Meal"会报错,实际场景需规避)
var originalMenu = new List<Dictionary<string, string>>
{
    new Dictionary<string, string> { { "Meal", "Pasta" }, { "Meal", "Pizza" } },
    new Dictionary<string, string> { { "Entree", "Calamari Salad" } }
};

// LINQ转换
var convertedMenu = originalMenu
    .Select(dict => dict
        .Select(kvp => $"{kvp.Key}:{kvp.Value}")
        .ToList())
    .ToList();

代码说明

  • 外层Select:遍历原始列表中的每个Dictionary<string, string>对象
  • 内层Select:针对每个字典的KeyValuePair<string, string>,用字符串插值拼接成"键:值"格式的字符串
  • 两次ToList():分别将内层的字符串序列转为List<string>,外层的序列转为List<List<string>>

注意事项

C#的Dictionary<TKey, TValue>不允许存在重复键,你的示例代码中尝试在同一个字典里添加两个"Meal"键会直接抛出ArgumentException。如果实际业务需要存储重复键的键值对,建议改用List<KeyValuePair<string, string>>承载数据,转换逻辑完全一致:

var originalMenu = new List<List<KeyValuePair<string, string>>>
{
    new List<KeyValuePair<string, string>> { 
        new KeyValuePair<string, string>("Meal", "Pasta"), 
        new KeyValuePair<string, string>("Meal", "Pizza") 
    },
    new List<KeyValuePair<string, string>> { 
        new KeyValuePair<string, string>("Entree", "Calamari Salad") 
    }
};

var convertedMenu = originalMenu
    .Select(kvpList => kvpList
        .Select(kvp => $"{kvp.Key}:{kvp.Value}")
        .ToList())
    .ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 09:36:22