0

このwhere句に問題があります。

from item in 
_documentRoot.Descendants("Level1").Descendants("Level2").Descendants("Level3")
where
_documentRoot.Descendants("Level1").Descendants("Level2").Attributes("id").First().Value == 12345

ID が 12345 の Level2 要素から Level3 アイテムのリストが必要です。

いつものように、どうもありがとう

4

6 に答える 6

1

ここでは XPath を使用します。

var items = xdoc.XPathSelectElements("//Level1/Level2[@id='1234']/Level3");

1234 に等しい属性を持つLevel3項目からすべての項目を選択します。LINQ メソッドの構文では、次のようになります。Level2id

var items = xdoc.Descendants("Level1")
                .Elements("Level2")
                .Where(l2 => (string)l2.Attribute("id") == "1234")
                .SelectMany(l2 => l2.Elements("Level3"));
于 2013-09-18T09:15:42.673 に答える
0
var res = from item
in _documentRoot.Descendants("Level1").Descendants("Level2")
where item.Attributes("id").First().Value == "12345"
select item.Descendants("Level3");
于 2013-09-18T08:58:04.283 に答える
0
_documentRoot.Descendants("Level1")
             .Descendants("Level2")
             .Where(i => i.Attributes.Any(a => a.Value == "1234"))
             .SelectMany(i => i.Descendants("Level3"));

すべてのレベル 3 の子孫を 1 つの.SelectManyIEnumerable に連結するには、拡張メソッドが重要です。

于 2013-09-18T08:59:34.257 に答える