【问题标题】:How to convert Dictionaries in C#如何在 C# 中转换字典
【发布时间】:2021-10-23 04:16:33
【问题描述】:

我有一个像下面这样的字典,我想转换

Dictionary<List<String>,Object>

Dictionary<String,Object>

【问题讨论】:

  • 转换...如何?就像列表中的每个项目都映射到同一个对象?您确定所有列表都有唯一的字符串吗?您可以使用foreach 手动完成,或者使用一些Linq。到目前为止,您尝试过什么吗?这是homework?如果没有,我建议你检查this
  • @Andrew 是的,我希望列表中的每个项目都映射到同一个对象。每个列表都有唯一的字符串。不,这不是家庭作业。
  • 每个列表都有唯一的字符串 - 这是否意味着“列表中的字符串保证是全局唯一的”?字符串在它们自己的列表中可能是唯一的,但如果两个不同的列表包含相同的字符串,你会很困难。
  • 顺便说一句,为什么object 是一个值?当然,它可以容纳任何东西,但使用它可能表明其他地方存在数据建模问题
  • 你能提供样本数据来说明你的意思吗?

标签: c# dictionary


【解决方案1】:

您可以按照问题的 cmets 中的说明完成映射,如下所示:

Dictionary<List<String>, Object> original = new Dictionary<List<string>, object>()
{
    { new List<string> { "A", "B", "C" }, 42 }
};

var mapped = original
    .SelectMany(kv => kv.Key, (val, key) => new { Key = key, val.Value})
    .ToDictionary(k => k.Key, v => v.Value);

结果:

Key Value
A   42
B   42
C   42

每个列表都有唯一的字符串。

如果 any 字符串在 any 列表中重复,您将获得 DuplicateKeyException

【讨论】:

    猜你喜欢
    • 2013-07-18
    • 1970-01-01
    • 2011-08-01
    • 2011-12-18
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    相关资源
    最近更新 更多