查找具有已定义属性wuth LINQ的父级

时间:2011-04-12 12:50:49

标签: c# xml linq parent

我有变量XElement content =

        "...
         <item text="Name-1" id="1" segment="1" secret-id="Find-Me">
            <item text="Name-1-1" id="1.1">
               <item text="Name-1-1-1" id="1.1.1" />
               <item text="Name-1-1-2" id="1.1.2" />
            </item>
         </item>
         ..."

我还有 id = 1.1.2

的项目

我需要找到此项目的第一个父项,其中包含属性 segment =“1”并获取其 secret-id

如何使用LINQ执行此操作?

2 个答案:

答案 0 :(得分:2)

你的意思是“最亲近的祖先”?

string secretId = element.Ancestors()
                         .Where(x => (string) x.Attribute("segment") == "1")
                         .Select(x => (string) x.Attribute("secret-id"))
                         .FirstOrDefault();

如果:

,结果将为null
  • 没有属性segment =“1”
  • 的祖先
  • 具有该属性的元素没有secret-id属性。

答案 1 :(得分:1)

像这样:

item.Ancestors().Select(p => p.Attribute("secret-id")).First(a => a != null)