2012-06-29 2 views
1

xml의 노드를 정렬해야합니다. 나는 알파벳 순으로 명령을 내리는 다음 코드를 가지고있다. 그러나 문자열이 허용 되더라도 대부분의 데이터는 숫자입니다. 필자는 IComparer를 설정하여 다른 곳에 나타나기를 바라고 데이터를 올바르게 정렬합니다.IComparer를 사용하여 xml의 노드 정렬/정렬 by

System.Xml.Linq.XDocument output = new System.Xml.Linq.XDocument(
        new System.Xml.Linq.XElement("xml", 
       from node in input.Root.Elements("training") 
       orderby node.Attribute("order").Value 
       select node)); 

나는 그게 XML을 작동하도록하는 방법을 생각하지 않은, 메서드 호출, .OrderBy(x => x, new CustomComparer())에 IComparer를 사용하지만,하는 방법을 발견했습니다. 필자가 온라인에서 읽은 것에서는 쿼리 구문으로 IComparer를 호출 할 수없는 것처럼 보입니다.

답변

4

맞아요. 쿼리 식 orderby 절에서 오버로드를 사용할 수 없습니다. 다행히도 검색어는 매우 간단하므로 다음을 사용할 수 있습니다.

// Have a using directive for System.Xml.Linq - it'll make everything simpler! 
XDocument output = new XDocument(
    new XElement("xml", 
     input.Root 
      .Elements("training") 
      .OrderBy(node => node.Attribute("order)".Value, comparer))); 
+0

감사합니다. 내가 시도한 쿼리는 매우 가깝지만 가까이서 잘라 내지는 않았습니다! – RememberME

관련 문제