通用OrderBy函数

时间:2012-06-07 17:16:52

标签: vb.net linq sql-order-by

我有一个包含很多列的网格视图,所有这些都需要进行排序。我在那里看到了一些片段,但我不能让他们中的任何一个与我的例子一起工作。这是我到目前为止所拥有的。

  Protected Sub gvSearch_OnSorting(ByVal sender As Object, _
                                   ByVal e As GridViewSortEventArgs)

    If Not Session("sort") Is Nothing Then
        Dim strView = Session("sort").ToString()
        gvSearch.DataSource = ApplySorting(Session("grid"), , "ASC")
    End If
End Sub

我在一篇文章中发现了这个,但我不确定将什么作为表达式

Private Function ApplySorting(Of T, U)( _
    query As IQueryable(Of T), _
    predicate As Expression(Of Func(Of T, U)), _
    order As String) As IQueryable(Of T)

    Dim ordered = TryCast(Query, IOrderedQueryable(Of T))
    If order = "ASC" Then
        If ordered IsNot Nothing Then
            Return ordered.ThenBy(predicate)
        End If
        Return query.OrderBy(predicate)
    Else
        If ordered IsNot Nothing Then
            Return ordered.ThenByDescending(predicate)
        End If
        Return query.OrderByDescending(predicate)
    End If
End Function

结束班

我知道实际的订单看起来像是

Dim GridValues As List(Of spSearchResult2Result)
GridValues = db.spSearchResult2().ToList()
GridValues.OrderBy(Function(x) x.CreateUserID)

对ApplySorting的调用将包含e.SortExpression,但我不知道如何在那里获取它。任何帮助,将不胜感激。感谢

1 个答案:

答案 0 :(得分:0)

表达式是

Function(x) x.CreateUserID

gvSearch.DataSource = _
    ApplySorting(Session("grid"), Function(x) x.CreateUserID, "ASC")