.net - 将字典从一种类型转换为另一种类型

标签 .net generics dictionary types

如何转换 Dictionary(Of TypeA, TypeB)Dictionary(Of TypeC, TypeD) ?转换时有一个隐式转换(假设第二个字典是 String, String ),所以这个过程应该是自动的,对吧?我只是想不出一种优雅的方式来做到这一点。

语言是 VB.NET,但如果你更习惯的话,我可以阅读和转换 C#。

最佳答案

我会在这样的情况下使用 Linq。有一个ToDictionary()该方法通过对 Enumerable 元素进行两次投影以生成字典的键和值,将任何通用 IEnumerable (和 Dictionary<TA,TB>IEnumerable<KeyValuePair<TA,TB>> )转换为字典。它使这些类型的转换非常简单:

Dictionary<TypeA, TypeB> myDictionary = new Dictionary<TypeA, TypeB>
                                            { 
                                               /*initialization here*/ 
                                            };
Dictionary<TypeC, TypeD> myChangedDictionary = 
    myDictionary.ToDictionary(x=>x.Key.AsTypeC(), x=>x.Value.AsTypeD())

AsTypeC() 和 AsTypeD() 是从 A/B 到 C/D 所需的任何转换的占位符。您建议第二个字典是 Dictionary<string,string> ;在这种情况下,您只需使用 ToString() (如果您已覆盖该方法)或在某些 String.Format 操作中使用键/值。

关于.net - 将字典从一种类型转换为另一种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6507804/

相关文章:

java - 如何捕获泛型父类(super class)类型参数的注解?

c# - 在 C# 中循环遍历字典

c# - 如何确定类是否在构建或运行时用 PostSharp 方面进行修饰

c# - 配置 TaskCompletionSource 的任务的延续行为

.net - Visual Studio : wrong reference version

Swift - 如何定义保证类型具有 init 的类型约束

c# - 使用反射的 .NET 远程处理

java - java中传递参数的通用可变个数

c++ - 在 C++ 中释放内存期间,迭代器与指针有何不同

c# - 将双 for 循环转换为 linq 查询