请帮忙用字典嵌套写代码,该如何解决

请帮忙用字典嵌套写代码
请帮忙用字典嵌套写代码,该如何解决
上面表中有三个字段,想分别设置为三个COMBOBOX来存入字段的不重复值

当我选中产地这个COMBOBOX是,有二个选项,即外资和国产
当我选中外资时,第二个COMBOBOX则只有外资品牌的选项
当我选中品牌中的某一项时,第三个COMBOBOX则只有这个品牌的类型
这三个COMBOBOX是联动的,想用字典嵌套的方法来做,却不会用。

请各位热心人帮忙写代码。
------解决思路----------------------
    class Program
    {
        static void Main(string[] args)
        {
            List<Car> car = new List<Car>();
            car.Add(new Car() { parenttext = "0", text = "外资" });
            car.Add(new Car() { parenttext = "0", text = "国产" });
            car.Add(new Car() { parenttext = "外资", text = "大众" });
            car.Add(new Car() { parenttext = "外资", text = "宝马" });
            car.Add(new Car() { parenttext = "外资", text = "丰田" });
            car.Add(new Car() { parenttext = "国产", text = "奇瑞" });
            car.Add(new Car() { parenttext = "国产", text = "比亚迪" });
            car.Add(new Car() { parenttext = "国产", text = "荣威" });
            car.Add(new Car() { parenttext = "大众", text = "A" });
            car.Add(new Car() { parenttext = "大众", text = "B" });
            car.Add(new Car() { parenttext = "大众", text = "C" });
            car.Add(new Car() { parenttext = "宝马", text = "A" });
            car.Add(new Car() { parenttext = "宝马", text = "B" });
            car.Add(new Car() { parenttext = "宝马", text = "C" });
            car.Add(new Car() { parenttext = "丰田", text = "A" });
            car.Add(new Car() { parenttext = "丰田", text = "B" });
            car.Add(new Car() { parenttext = "丰田", text = "C" });
            car.Add(new Car() { parenttext = "丰田", text = "D" });
            car.Add(new Car() { parenttext = "丰田", text = "AB" });
            car.Add(new Car() { parenttext = "丰田", text = "CD" });
            car.Add(new Car() { parenttext = "丰田", text = "EF" });
            car.Add(new Car() { parenttext = "奇瑞", text = "A1" });
            car.Add(new Car() { parenttext = "奇瑞", text = "A2" });
            car.Add(new Car() { parenttext = "奇瑞", text = "A3" });
            car.Add(new Car() { parenttext = "比亚迪", text = "B1" });
            car.Add(new Car() { parenttext = "比亚迪", text = "B2" });
            car.Add(new Car() { parenttext = "比亚迪", text = "B3" });
            car.Add(new Car() { parenttext = "比亚迪", text = "B4" });
            car.Add(new Car() { parenttext = "荣威", text = "Q1" });
            car.Add(new Car() { parenttext = "荣威", text = "Q2" });
            car.Add(new Car() { parenttext = "荣威", text = "Q3" });
            car.Add(new Car() { parenttext = "荣威", text = "Q4" });
            car.Add(new Car() { parenttext = "荣威", text = "Q5" });

            List<Car> car1 = car.Where(u => u.parenttext == "0").ToList();//第一个下拉框绑定数据

            var car1Text = "国产";
            List<Car> car2 = car.Where(u => u.parenttext == car1Text).ToList();//第二个下拉框绑定数据

            var car2Text = "比亚迪";
            List<Car> car3 = car.Where(u => u.parenttext == car2Text).ToList();

            Console.WriteLine(car1.Count);
            Console.WriteLine(car2.Count);
            Console.WriteLine(car3.Count);
            Console.ReadLine();
        }

        class Car
        {
            public string parenttext { get; set; }
            public string text { get; set; }
        }
    }

------解决思路----------------------
Dictionary<string, Dictionary<string, string>>
------解决思路----------------------
数据库balabala
reader = dbcommand.ExecuteReader()
 While reader.Read()
        combobox1.items.add(reader(0))
         balabala
end while

然后在SelectedIndexChanged之类的事件改变其他几个combobox
------解决思路----------------------
两次GroupBy再分别ToDictionary
如果你的输入数据是
string[][] data = { { "外资", "大众", "A" }, { "外资", "大众", "A" }, ... } 
var result = data.GroupBy(x => x[0]).ToDictionary(x => x.Key, x.GroupBy(y => y[1]).ToDictionary(y => y.ToList()));