如何使用Linq从XML创建字典数组?

时间:2010-04-26 14:41:12

标签: c# xml linq arrays dictionary

给出以下XML结构:

<courses>
  <course>
    <title>foo</title>
    <description>bar</description>
  </course>
  ...
</courses>

如何创建字典数组,使每个字典包含课程中的所有元素/值对?

我现在拥有的是一个数组,其元素包含一个课程中每个元素/值对的单个键/值字典:

XElement x = XElement.Parse("...xml string...");
var foo = (from n in x.Elements() select n)
    .Elements().ToDictionary(y => y.Name, y => y.Value);

产地:

[0] => {[course, foo]}
[1] => {[description, bar]}

我想要的是:

[0] => {[course, foo], [description, bar]}

1 个答案:

答案 0 :(得分:4)

像这样:

x.Elements("course")
 .Select(c => c.Elements().ToDictionary(y => y.Name, y => y.Value))
 .ToArray();