2011-08-26 4 views
1

나는 linq을 처음 사용하고 있으며 쿼리를 작성하는 데 너무 많은 다양한 방법을 찾아 냈습니다. 나는 현재이 코드를 보여주기 위해 두 가지 문제를 해결하기 위해 게시하고 싶다. 동적으로 오름차순/내림차순옵션으로 Linq to XML 동적 순서

을 전달 할 수 있다는

  1. . 어떤 경우에는 내가

  2. 동적 매개 변수

    에 의해 주문 번호를 통과 할 수 있어야 다른 오름차순/내림차순 순서대로 각 속성을 정렬 할 수 있어야합니다. 아래 코드에서는 주문하려는 각 항목에 대해 여러 특성을 전달합니다. 분명히, 나는 콜렉션을 전달하고 코드가 그 콜렉션에 기반하여 콜렉션을 작성할 수있게 할 것이다. 컬렉션을 전달할 수는 있지만 컬렉션에서 주문을 작성하는 방법을 잘 모르겠습니다.

    b. 또한 정렬 유형이 어떤 시점에서 작동 할 것이라고 생각하므로 동적 캐스팅 방법을 어떻게 알 수 있을지 잘 모르겠습니다.

입력 해 주셔서 감사합니다.

Private Function XMLSort(ByVal xOldDom As XmlDocument, ByVal sChildNodeName As String, ByVal sOrderByAttributeName1 As String, ByVal sOrderByAttributeName2 As String, ByVal sOrderByAttributeName3 As String) As IEnumerable(Of XElement) 
     Dim xOldDocument As New XDocument 
     xOldDocument = XDocument.Parse(xOldDom.OuterXml) 

     Dim oQuery As IEnumerable(Of XElement) 
     oQuery = From xNode In xOldDocument.Descendants(sChildNodeName) _ 
        Order By CInt(xNode.Attribute(sOrderByAttributeName1)), CInt(xNode.Attribute(sOrderByAttributeName2)), CStr(xNode.Attribute(sOrderByAttributeName3)) _ 
        Select xNode 

     Return oQuery 
    End Function 
+0

동적 정렬의 이유는 무엇입니까? 프로그램의 다른 부분 만 다른 정렬이 필요합니까? 또는 사용자로부터 필요한 정렬을 얻습니까? 그렇다면 사용자는 어떤 형태로 사용자를 얻을 수 있습니까? – svick

+0

응용 프로그램의 다른 부분이 다른 정렬이 필요합니다. 제 3 자 어셈블리를 사용하여 정보를 반환하고보기로 보내기 전에 요구 사항을 기반으로 해당 정보를 정렬해야합니다. – dwhittenburg

답변

0

최상의 옵션은 다음과 같습니다. 컬렉션을 가지고 컴파일 타임에 필요한 순서를 알았 으면 LINQ를 사용하여 순서를 지정하면됩니다. 나는 당신이 훨씬 더 잘할 수 없다고 생각합니다. 어떤 식 으로든 명령을 표현해야하고 LINQ는 얻을 수있는만큼 편안합니다.

+0

좋은 소리입니다. 감사. 현재 반환해야하는 각 XML에 대해 정렬 함수를 만들고 있습니다. 나는 XML에서 전달할 수있는 함수와 정렬 할 대상을 통합하여 정렬 할 수 있도록하려고 시도했습니다. – dwhittenburg