-2

1 つの 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です。

このため、実際にクエリを実行するnameと、子file要素の属性が見つからず、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 に答える