如何转换Dictionary到Dictionary

本文关键字:string Dictionary 何转换 int dynamic 转换 | 更新日期: 2023-09-27 18:07:04

我正在学习c# &有以下代码:

private static Policy ConstructNode(Policy policy, Dictionary<string, dynamic> noticeDictionary)
    {
        Policy policy = new Policy();
        foreach (var pair in noticeDictionary)
        {
        policy.Emails = pair.Value; // HERE, I GET RUNTIME ERROR
        ...
        }
    return policy;
 }

Policy类中的EmailsDictionary<string, uint> &pair.ValueDictionary<string, dynamic>

公告如下:

noticeDictionary.Add("Notice", JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(val)); 

val包含JSON字符串,可以包含字符串或带字符串键的int值。

我如何转换它们使它不会给出错误?

如何转换Dictionary<string, dynamic>到Dictionary<string, int>

Dictionary<string, uint> Converted =  noticeDictionary
    // Next steps converts to an IEnumerable<anonymoustype<string,uint>>
    .Select(kvp=> new { key = kvp.Key , val = (uint)kvp.Value})
    // Now that we have strongly typed data in enumerable form, get it back into a dictionary
    .ToDictionary(item=>item.Key,item=>item.Value);

关于你的第二个问题(如果类型是混合的,我如何不出错地强制转换),这是不可能的,但如果字符串只是编码为int,你可以通过修改select val来处理这两个

    .Select(kvp=> new { key = kvp.Key , val = (kvp.Value is int) ? (kvp.Value) : uint.Parse((string)kvp.Value)}) // This is untested, let me know if you have trouble