获取兄弟节点linq

时间:2017-10-17 19:59:49

标签: c# linq

我有一个XML,如下所示。当路径为d:\ mypath时,我将不得不获取标题。我试过下面的一个,但没有按预期给出。我想在LINQ to XML中实现它。

我的代码:

XDocument xdoc = XDocument.Load(file);
string mypath = @"D:\\Mypath";
var result = xdoc.Descendants("child")
    .Where(i => (string)i.Element("content").Element("path") == mypath)
    .Select(i => (string)i.Element("title")).FirstOrDefault();

现在我已经使用XPathSelectElement完成了我的任务,如下所示,但我对LINQ查询感兴趣:

string a = (string)xdoc.XPathSelectElement(
    "//child/content[path='" + mypath + "']/../doc_attributes/title");

示例XML:

<parent>
    <doc>
        <order>testorder</order>
        <preorder>yes</preorder>
    </doc>
    <childs>
        <child>
            <doc_attributes>
                <id>090015b3804fb931</id>
                <title>CTA</title>
            </doc_attributes>
            <content>
                <path>D:\\Mypath</path>
            </content>
        </child>
    </childs>
</parent>

1 个答案:

答案 0 :(得分:1)

你很接近,你只是忘记检查Value财产

.Where(i => i.Element("content").Element("path").Value == mypath)