2013-06-28 2 views
0

나는 다음과 같은 XML 데이터를 가지고 :Linq를 XML로 쿼리 결과를 반환

var root = XElement.Load("D:\\Foxpert\\FlagChanges\\FlagChanges\\Modified.xml"); 
    var table = root.Descendants("table").Where(e => e.Attribute("name").Value == "Table04") 
    .Select(e => new XElement(e.Parent)).First(); 
table.Dump(); 
    var obj = root.Descendants("object").Where(o => o.Attribute("name").Value == "Object01") 
    .Select(o => new XElement(o)).First(); 
    obj.Dump(); 
    foreach (XElement t in obj.Descendants("table")){ 
    t.Attribute("name").Dump(); 
    t.Parent.Attribute("name").Dump(); 
} 
    table.Attribute("name").Dump(); 
    var parent = obj.Descendants("table") 
    .Where(e => e.Attribute("name")==table.Attribute("name")) 
    .Select(e => new XElement(e.Parent)); 
    parent.Dump(); 

부모 결과가 비어 :

<?xml version="1.0" encoding="utf-8" ?> 
    <root> 
    <object name="Object01" table="Table01" pk="Table01_Id"> 
     <table name="Table02" pk="Table02_Id" fk="Table01_Id" include="false"> 
     <table name="Table03" pk="Table03_Id" fk="Table02_Id" include="true"> 
      <table name="Table04" pk="Table04_Id" fk="Table03_Id" include="true"> 
      </table> 
     </table> 
     </table> 
     <table name="Table05" pk="Table05_Id" fk="Table01_Id" include="false"> 
     <table name="Table06" pk="Table06_Id" fk="Table05_Id" include="true" /> 
     </table> 
    </object> 
    <object name="Object02" table="Table07" pk="Table07_Id"> 
     <table name="Table08" pk="Table08_Id" fk="Table07_Id" include="false"> 
     <table name="Table04" pk="Table04_Id" fk="Table08_Id" include="true" /> 
     </table>  
    </object> 
    </root> 

나는 LinqPad에서 다음을 실행

.

누군가 LinqPad에서 코드를 시도해보고 부모님이 비어있는 이유를 말해 주실 수 있습니까?

답변

1
var parent = obj.Descendants("table") 
.Where(e => e.Attribute("name").Value==table.Attribute("name").Value) 
.Select(e => new XElement(e.Parent)); 

e.Attribute("name")table.Attribute("name")는 "평등"하지 않습니다 - 그들은 단지 같은 값을 가지고있다.

관련 문제