我需要帮助来转换字典实例的特定部分,例如说我有这个模型实例
public class MyModel
{
public int id {get;set;}
public List<ClassC> classc {get; set;}
public Dictionary<ClassA,ClassB> {get; set;}
}
在此MyModel实例上,我需要删除ClassA并将字典实例中的ClassB转换为列表,然后得到此结果。有直接的方法吗?还是我真的需要提取每个记录并将每个记录转移到新的模型类中?
public class newMyModel
{
public int id {get;set;}
public List<ClassC> classc {get;set;}
public List<ClassB> {get; set;}
}
答案 0 :(得分:2)
您可以定义newMyModel
的构造函数,该构造函数将接受类型为MyModel
的参数对象:
public newMyModel(MyModel oldModel)
{
this.id = oldModel.id;
this.classc = oldModel.classc;
this.classb = oldModel.dict.Values.ToList();
}
我假设Dictionary
类中的MyModel
字段被命名为dict
,而List<ClassB>
中的newMyModel
被命名为classb
。
答案 1 :(得分:0)
您所需要的只是使用linq随附的Values.ToList()
。
这是您的案例的完整示例:
using System.Collections.Generic;
using System.Linq; // <- Don't forget this
public class Program
{
public class ClassA {
public int A {get; set;}
}
public class ClassB {
public int B {get; set;}
}
public class ClassC {
public int C {get; set;}
}
public class MyModel
{
public int id {get;set;}
public List<ClassC> classc {get; set;}
public Dictionary<ClassA,ClassB> dic {get; set;}
}
public class NewMyModel
{
public int id {get;set;}
public List<ClassC> classc {get;set;}
public List<ClassB> listb {get; set;}
}
public static void Main()
{
// Initializing MyModel
MyModel a = new MyModel(){
id = 1,
classc = new List<ClassC>(){
new ClassC(){
C = 1
}
},
dic = new Dictionary<ClassA,ClassB>(){
{
new ClassA(){
A = 1
},
new ClassB() {
B = 1
}
}
}
};
NewMyModel b = new NewMyModel() {
id = a.id,
classc = a.classc,
// Converting values of the dictionary to list
// Note: Values contains ClassB type of objects
listb = a.dic.Values.ToList()
};
}
}
注意:
不要忘记导入System.Linq
以使ToList()
功能可用。