如何查询此XML文件?

时间:2011-10-17 21:59:07

标签: c# xml linq linq-to-xml

我很难尝试创建查询。这是文件:

<Root>
<Summary>
    <Objective ID="1">
        <Exam Result="70" />
        <Exam Result="90" />
    </Objective>
    <Objective ID="2">
        <Exam Result="100" />
        <Exam Result="90" />
    </Objective>
</Summary>
</Root>

我需要获取List&lt;中的值列表与LT;双&GT;取代。第一个列表是否为目标,最后一个是存储每个结果。

如有任何疑问,请告诉我

1 个答案:

答案 0 :(得分:6)

我怀疑你想要:

var results = doc.Descendants("Objective")
                 .Select(x => x.Elements("Exam")
                               .Select(exam => (double) exam.Attribute("Result"))
                               .ToList())
                 .ToList();

或者,如果目标ID很重要,您可能需要考虑Dictionary<int, List<double>>

var results = doc.Descendants("Objective")
                 .ToDictionary(x => (int) x.Attribute("ID"),
                               x => x.Elements("Exam")
                                     .Select(y => (double) y.Attribute("Result"))
                                     .ToList());

Lookup<int, double>

var results = doc.Descendants("Exam")
                 .ToLookup(x => (int) x.Parent.Attribute("ID"),
                           x => x.Select(y => (double) y.Attribute("Result"));