在哪里存储我的词典

时间:2013-07-15 17:23:35

标签: c# linq dictionary resources

我有一个静态字典,我需要在我的程序中使用。我将它加载到字典中,我想知道如何以及在何处存储它,以便我可以在以后最简单的方式访问它的值。

我想知道使用key->值对来制作它的xml文件但我不确切知道如何保存它并将其格式化以便稍后我可以调用它来调用我的appSettings键和值(使用LINQ)。

我只需要将它存储在某个地方,作为一种资源,为什么不存在,每次我需要一个特定的值来获取一个特定的值时,它只需要一行代码来获取它的值。

1 个答案:

答案 0 :(得分:0)

您可以使用LINQ2XML创建两种用于编写和读取Dictionary对象的方法。

将词典(扩展/更改类型)存储到文件中:

private void storeXml(string location, Dictionary<int, string> data)
{
    var xml = new XElement("storage", 
                    data.Select(kv => new XElement("entry", 
                                new XElement("key", kv.Key), 
                                new XElement("value", kv.Value))));
    xml.Save(location);
}

从文件中读取数据并填写字典对象:

private Dictionary<int, string> readXml(string location)
{
    var data = new Dictionary<int, string>();

    var xml = XDocument.Load(location);
    foreach(var element in xml.Descendants("entry").ToList())
    {
        var key = int.Parse(element.Element("key").Value);
        var value = element.Element("value").Value;
        data.Add(key, value);
    }

    return data;
}

代码可以像这样使用:

var data = new Dictionary<int, string>();
data.Add(1, "one");
data.Add(2, "two");
data.Add(3, "three");
data.Add(4, "four");

var fileLocation = @"d:\temp\dictionary.xml";

storeXml(fileLocation, data);

var d = readXml(fileLocation);

XML文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<storage>
    <entry>
        <key>1</key>
        <value>one</value>
    </entry>
    <entry>
        <key>2</key>
        <value>two</value>
    </entry>
    <entry>
        <key>3</key>
        <value>three</value>
    </entry>
    <entry>
        <key>4</key>
        <value>four</value>
    </entry>
</storage>