2011-08-26 38 views
1

我是linq的新手,我發現有很多不同的方法來構建查詢。我想發佈這個來顯示我目前正在使用的代碼並嘗試解決兩個問題。Linq到選項的XML動態排序

  1. 能夠動態傳遞ASC /降序

    一個。在某些情況下,我希望能夠在不同的遞增/遞減順序對各屬性進行排序

  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

應用程序的不同部分需要不同的排序。我使用第三方程序集來返回信息,並且需要根據需求對信息進行排序,然後將其發送到View。 – dwhittenburg

回答

0

在你的情況下,最好的選擇是:做到這一點。當你有收集並且在編譯時知道所需的順序,只需使用LINQ來訂購它。我認爲,你不能做得更好,你將不得不以某種方式表達順序,而LINQ也是如此舒適。

+0

聽起來不錯。謝謝。我目前正在爲每個必須返回的XML創建一個排序函數。我只是想整合這些函數以便能夠傳入xml以及排序並允許排序。 – dwhittenburg