-2

是否可以使用一个 LINQ 查询一次返回所有元素和子元素的值?使用下面的查询,我可以检索第一个元素,但不能检索子元素。

var query = from c in xDoc.Descendants("file")
            orderby c.Name
            select new
            {
                // This gets the main elements
                Name = (string)c.Element("name").Value,
            };

XML 文件如下所示:

<files>
    <file id="1">
        <name>A file</name>
        <processDetails>
            <purpose>It's supposed to get files.</purpose>
            <filestoProcess>
                <file>alongfile.pgp</file>
                <file>Anotherfile.pgp</file>
                <file>YetAnotherfile.CSV</file>
            </filestoProcess>
            <schedule>
                <day>Mon</day>
                <day>Tue</day>
                <time>9:00am</time>
            </schedule>
            <history>
                <historyevent>Eh?</historyevent>
                <historyevent>Two</historyevent>
            </history>
        </processDetails>
    </file>
<files>

此外,一旦检索到我将如何访问子元素来填充列表框和/或文本框?

4

1 回答 1

0

您的查询的问题是您的第一个file元素似乎与您的子file元素的类型不同。

因此,当您实际执行查询时,您将无法找到namefile元素的属性,并且您将获得一个null reference exception when you try to invoke theValue property of the childfile` 元素。


你似乎试图做的事情没有多大意义。但也许您想要以下内容:

var query = from c in xdoc.Descendants("file")
            orderby c.Name
            select new
            {
                // This gets the main elements
                Name = c.Element("name") == null ? c.Value : c.Element("name").Value,
            };
于 2013-06-20T19:36:13.323 回答