2013-07-29 2 views
1

여기에 XML에서 요소를 가져 와서 배열에 넣는 현재 코드가 있습니다. 그러나 그것은 단지 그것을 읽는 순서 (위에서 아래로)에 넣습니다XML을 배열로 변환하기 전에 속성별로 XML을 정렬 할 수 있습니까?

I 차례대로 (이 경우, "순서"에서) 속성에 의해 배열을 정렬 할 수 있다면 내가 알고 싶은
using System.Xml; 
using System.Xml.Linq; 

// XML Path 
var doc = XDocument.Load("C:/Scripts/example.xml"); 

// Node 
string[] picks = doc.Descendants("pick").Select(element => element.Value).ToArray(); 

배열로.

<championSelect> 
<blue> 
    <pick order="1">Gragas</pick> 
    <pick order="4">Shen</pick> 
    <pick order="5">Shyvanna</pick> 
    <pick order="8">Garen</pick> 
    <pick order="9">Karthus</pick> 
</blue> 
<red> 
    <pick order="2">Draven</pick> 
    <pick order="3">Ryze</pick> 
    <pick order="6">Ahri</pick> 
    <pick order="7">Annie</pick> 
    <pick order="10">Brand</pick> 
</red> 

내가있는 OrderBy()와 OrderByDescending (놀고 있었는데)와 : 원하는 출력되는 {Gragas, Draven, Ryze, 쉔, Shyvanna, ...} 여기

내 XML이다 조금 운

+0

왜 befor을있는 OrderBy를 사용하지 OrderBy 확장 메서드 e .ToArray? –

+0

배열로 변환 한 다음 정렬하십시오. XML을 정렬하는 것보다 배열을 정렬하는 것이 훨씬 더 합리적입니다 (LINQ to XML과 같은 일부 추상화를 사용하여 가능하지만 noramlly가 아니며 의미가 없습니다). – evanmcdonnal

+0

@evanmcdonnal OPERATOR가 최종 배열 – JaredPar

답변

3

사용

string[] picks = doc 
    .Descendants("pick") 
    .OrderBy(element => Int32.Parse(element.GetAttribute("order").Value)) 
    .Select(element => element.Value) 
    .ToArray(); 
+0

+1에없는 값으로 정렬하려고하기 때문에 @evanmcdonnal을 먼저 배열로 바꾸는 것은 여기서는 작동하지 않지만 'OrderBy (element => Int32.Parse (element .Attribute ("order") .Value)'나는 생각한다. – keyboardP

+0

@keyboardP 나는 틀렸다.'GetAttributeNode'가'AttributeNode' 타입을 반환하는 동안'GetAttribute' 메소드는'string'을 리턴합니다. – JaredPar

+0

여기 @keyboardP는 MSDN 페이지입니다. http://msdn.microsoft.com/en-us/library/acwfyhc7.aspx – JaredPar

관련 문제