获取字典实例的特定部分

时间:2019-04-15 05:58:37

标签: c# linq

我需要帮助来转换字典实例的特定部分,例如说我有这个模型实例

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;}
}

2 个答案:

答案 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()功能可用。