C# 用LINQ到XML填充字典

C# 用LINQ到XML填充字典,c#,xml,linq,linq-to-xml,linq-to-objects,C#,Xml,Linq,Linq To Xml,Linq To Objects,我正在使用LINQtoXML解析XML文档,并从该XML创建许多对象。其中一个对象的属性是Dictionary,我需要从XML填充Dictionary。但是,我不确定这样做所需的实际语法 我知道我需要获取属性值,并以某种方式将它们分配给字典中的键/值 我该怎么做 我有一个这样的模型课: public class Statistics { string Name { get; set; } public IDictionary<string, string> Infor

我正在使用LINQtoXML解析XML文档,并从该XML创建许多对象。其中一个对象的属性是Dictionary,我需要从XML填充Dictionary。但是,我不确定这样做所需的实际语法

我知道我需要获取属性值,并以某种方式将它们分配给字典中的键/值

我该怎么做

我有一个这样的模型课:

public class Statistics
{
    string Name { get; set; }
    public IDictionary<string, string> Information { get; set; }
}
  <section>
    <parameter name="this is a key" value="this is a value" />
    <parameter name="this is a key 2" value="this is a value 2" />
  </section>
但我不确定如何将其应用于我的LINQ查询,以下代码是更大的LINQ到XML查询的一部分:

.Select(x => new Statistics
                {
                    Name = x.Attribute("name").Value,
                    Information = What goes here? .Select.Attributes? .ToDictionary(x => x.name, x => x.value);

我认为这不是最好的解决办法

我会这样做:

.Select(x => new Statistics
            {
                Name = x.Attribute("name").Value,
                Information = GetParameterDictionnary(sectionNode)
我会创建这个函数

private Dictionary<string, string> GetParameterDictionnary(XmlNode sectionNode)
{
    var dictionary = new Dictionary<string,string>();
    foreach(var child in sectionNode.Children)
    {
        dictionary.Add(child.Attribute("name"), child.Attribute("value"));
    }
    return dictionary;
}
专用字典GetParameterDictionary(XmlNode sectionNode)
{
var dictionary=newdictionary();
foreach(sectionNode.Children中的变量child)
{
Add(child.Attribute(“name”)、child.Attribute(“value”);
}
返回字典;
}

我认为这不是最好的解决方案

我会这样做:

.Select(x => new Statistics
            {
                Name = x.Attribute("name").Value,
                Information = GetParameterDictionnary(sectionNode)
我会创建这个函数

private Dictionary<string, string> GetParameterDictionnary(XmlNode sectionNode)
{
    var dictionary = new Dictionary<string,string>();
    foreach(var child in sectionNode.Children)
    {
        dictionary.Add(child.Attribute("name"), child.Attribute("value"));
    }
    return dictionary;
}
专用字典GetParameterDictionary(XmlNode sectionNode)
{
var dictionary=newdictionary();
foreach(sectionNode.Children中的变量child)
{
Add(child.Attribute(“name”)、child.Attribute(“value”);
}
返回字典;
}

如何从查询中获取sectionNode?另一个答案似乎比我的部分解决方案(依赖部分示例)更好地回答问题。我如何从查询中获取sectionNode?另一个答案似乎比我的部分解决方案(依赖部分示例)更好地回答问题唯一的问题是我已经调用了XDocument.Load。有没有其他方法不加载两次?@user9993
XDocument.Load(filename)
返回
XElement
。因此,您可以使用任何适当的元素,如
p.subjections(“参数”).ToDictionary(…)
唯一的问题是我已经调用了XDocument.Load。有没有其他方法不加载两次?@user9993
XDocument.Load(filename)
返回
XElement
。因此,您可以使用任何适当的元素,如
p.substands(“参数”).ToDictionary(…)