如何转换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
类中的Emails
为Dictionary<string, uint>
&pair.Value
含Dictionary<string, dynamic>
公告如下:
noticeDictionary.Add("Notice", JsonConvert.DeserializeObject<Dictionary<string, dynamic>>(val));
val包含JSON字符串,可以包含字符串或带字符串键的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