我有以下数据,我想以优雅的方式定义并快速访问。
Dictionary<string, string> myDictionary = new Dictionary<string, string>
{
{"a", "1"},
{"b" "2"}
};
现在&#34; 1&#34;和&#34; 2&#34;在2个不同的模块x和y中定义。 我在这里想到嵌套字典。我正在寻找优雅的定义方式。
我的想法:
//FileA - Namespace1
Dictionary<string, string> dcA = new Dictionary<string, string>
{
{"LOC1", "ADDR1"},
{"LOC2", "ADDR2"}
};
//FileB - NameSpace1
Dictionary<string, string> dcB = new Dictionary<string, string>
{
{"LOC3", "ADD3"},
{"LOC4", "ADD4"}
};
//FileX - NameSpace 2
static Dictionary<string, string> dc1 = new Dictionary<string, Dictionary<string, string>>
{
{"LOC1", dcA.GetValue("LOC1"},
{"LOC2", dcA.GetValue("LOC2"},
{"LOC3", dcA.GetValue("LOC3"},
{"LOC4", dcA.GetValue("LOC4"},
};
string myString;
string key = "LOC1";
if (!dc1.TryGetValue(key, out myString))
{
throw new InvalidDataException("Can't find the your Addr for this LOC");
}
Console.WriteLine("myString : {0}", myString)
//Expected output as
myString : ADDR1
是的我想将2个词典与新词典结合起来。问题是我可以访问新字典的值,如dcA.GetValue(&#34; LOC1&#34;}。试着看看是否有更好的解决方案或数据结构,我根本就没有想到。
答案 0 :(得分:0)
您可以通过2个选项执行此操作。
选项1。 // FileX - NameSpace 2
Dictionary<string, string> dc1 = dcA;
foreach (var item in dcB)
{
dc1[item.Key] = item.Value;
}
选项2。
Dictionary<string, string> dc1 = new Dictionary<string,string>();
foreach (var item in dcA)
{
dc1[item.Key] = item.Value;
}
foreach (var item in dcB)
{
dc1[item.Key] = item.Value;
}
选项1将比选项2更快。因为在选项1中只有一个用于循环并且选项在初始化期间复制第一个字典。