Linq以XML动态顺序选项

时间:2011-08-26 18:24:03

标签: linq linq-to-xml

我是linq的新手,我发现了很多不同的方法来构建查询。我想发布这个以显示我目前正在使用的代码并尝试解决两个问题。

  1. 能够动态传入asc / desc

    一个。在某些情况下,我希望能够以不同的asc / desc顺序对每个属性进行排序

  2. 能够通过参数

    动态传递订单数量

    一个。在下面的代码中,我为我想要订购的每个项目传递了多个属性。显然,我宁愿传入一个集合,然后允许代码根据该集合构建订单。我可以传递集合,但我不确定如何从该集合构建订单。

    湾我也认为排序类型会在某些时候发挥作用,所以我不知道我怎么能够知道如何动态演员?

  3. 感谢您的任何意见。

        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
    

1 个答案:

答案 0 :(得分:0)

在你的情况下,最好的选择是:做到这一点。当您拥有集合并在编译时知道所需的顺序时,只需使用LINQ来订购它。我认为,你不能做得更好,你必须以某种方式表达秩序,LINQ就像它一样舒服。