哪种C#数据结构最好/可行存储分层数据

时间:2017-04-28 17:16:48

标签: c# data-structures

我的数据结构如下:

enter image description here

哪种C#数据结构最适合存储和检索这些?

我希望能够引用Dev,Dev.Value1,Dev.Key1,Test,Test.Key1等等。

更新:我有一个json文件,当我解析它时,我得到了这些值。因此,环境(Dev,Test)的数量将更像(Dev,Test,UAT,Stable,Prod)。每个环境中Key,Value对的数量也不同。我需要将它们分别存储在一个结构中,以便以后使用它们。当我解析json时,我将得到一个环境(Dev)及其所有键,值对,然后我将获得Test,然后是其所有键值对。

3 个答案:

答案 0 :(得分:1)

你可以像这样上课......

public class Environment
{
    Dictionary<string, string> KeyValueData { get; set; }
    public string Name { get; set; }
    public Environment(string name)
    {
        Name = name;
        KeyValueData = new Dictionary<string, string>();
    }

    public void AddNewData(string key, string value)
    {
        this.KeyValueData.Add(key, value);
    }
}

用法:

List<Environment> environments = new List<Environment>();
Environment env = new Environment("Test");
env.AddNewData("key1", "value1");
env.AddNewData("key2", "value2");
env.AddNewData("key3", "value3");

Environment env2 = new Environment("Prod");
env2.AddNewData("key1", "value1");
env2.AddNewData("key2", "value2");
env2.AddNewData("key3", "value3");
//...
environments.Add(env2);

答案 1 :(得分:0)

这样的事情可以帮到你。

var environments = new Dictionary<string, Dictionary<string, string>>
{
    {
        "Dev", new Dictionary<string, string>
        {
            {"Key1", "Value1"},
            {"Key2", "Value2"}
        }
    },
    {
        "Test", new Dictionary<string, string>
        {
            {"Key1", "Value1"},
            {"Key2", "Value2"}
        }
    }
};

var devKey1 = environments["Dev"]["Key1"];

environments["Prod"] = new Dictionary<string, string>
{
    {"Key1", "Value1"},
    {"Key2", "Value2"}
};

答案 2 :(得分:0)

就像其他人说的那样,你可以很容易地为此创建自己的类,但既然你在问这个问题,我认为你需要或者更愿意使用现有的代码。你需要的是一本字典词典。

例如

Dictionary<string, Dictionary<string,string>> ImAssBackwards = new Dictionary<string, Dictionary<string, string>>();
ImAssBackwards.Add("Dev", 
        new Dictionary<string, string>()
        {
            {
                "Key1",
                "Value1"
            },
            {
                "Key2",
                "Value2"
            }
        });

Dictionary<string, string> PantOnHeadSilly = ImAssBackwards["Dev"];