2011-03-11 55 views
1

我有一個看起來像這樣的LINQ to XML嵌套代碼加入問題

<Labs> 
    <Lab id="a" name="a"> 
    <Test name="aa"></Test> 
    <Test name="ab"></Test> 
    <Test name="ac"></Test> 
    </Lab> 
    <Lab id="b" name="b"> 
    <Test name="ba"></Test> 
    <Test name="bb"></Test> 
    </Lab> 
</Labs> 

我想使用LINQ通過一個單一的select語句爲xml,以獲得單個表從這個XML數據的XML。如果您可以向我提供如何執行查詢的參考。

我將Linq綁定到XML查詢輸出到silverlight網格。輸出應該是這樣的在Silverlight ......這裏

LabName TestName 
a   aa 
a   ab 
a   ac 
b   ba 
b   bb 
+0

你的問題不是很清楚。也許你可以提供一個輸出樣本。 – tucaz 2011-03-11 12:30:47

+0

更新了上面的代碼段... – 2011-03-11 12:51:05

回答

1

OK是一個工作示例:

string xml [email protected]"<Labs> 
    <Lab id='a'> 
    <Test name='aa'></Test> 
    <Test name='ab'></Test> 
    <Test name='ac'></Test> 
    </Lab> 
    <Lab id='b'> 
    <Test name='ba'></Test> 
    <Test name='bb'></Test> 
    </Lab> 
</Labs>"; 

XDocument document = XDocument.Parse(xml); 
IEnumerable<XElement> xElements = document.Descendants().Where(e => e.Name == "Test"); 
var results = xElements.Select(m => new 
             { 
              Test = m.Attributes("name").FirstOrDefault().Value, 
                Lab =m.Parent.Attributes("id").FirstOrDefault().Value 
             }); 
     foreach (var result in results) 
{ 
      Console.Write(result.Lab); 
      Console.Write('\t'); 
      Console.WriteLine(result.Test); 
} 
+0

我已經更新了上面的代碼。你能幫我嗎? – 2011-03-11 12:51:39

+0

好的,我已經更新。看一看。 – Aliostad 2011-03-11 13:17:54

+0

@ Shahid有幫助嗎?你嘗試過嗎? – Aliostad 2011-03-11 13:37:31

0

張貼由Aliostad上述溶液的遊離λ版本。你可以使用這個以及...

 var Tests = from tests in doc.Descendants("Test") 
        where tests.Attributes().Count() > 0 
        select new LabTestModel 
           { 
            LabName = tests.Parent.Attribute("Name").Value, 
            TestName = tests.Attribute("Name").Value 
           };