使用GridView和LINQ排序的最佳方法是什么?

时间:2008-10-22 13:31:05

标签: vb.net linq linq-to-sql gridview

LINQ似乎缺少的一件事是通过文本字符串引用列的方法。例如,我有一个典型的GridView设置,像这样排序(DataSource绑定到代码隐藏中的LINQ查询):

<asp:GridView ID="MyGridView" runat="server" AllowSorting="True">
    <Columns>
        <asp:BoundField DataField="field1" SortExpression="field1" HeaderText="Field 1" />
        <asp:BoundField DataField="field2" SortExpression="field2" HeaderText="Field 2" />
        <%-- etc. --%>
    </Columns>
</asp:GridView>

为了使排序起作用,我必须在MyGridView_Sorting事件处理程序中使用两个巨大的Select语句(以处理升序和降序):

Dim query = From t In context.MyTables

If e.SortDirection = SortDirection.Ascending Then
    Select Case e.SortExpression
        Case "field1"
            query = query.OrderBy(Function(x) x.field1)
        Case "field2"
            query = query.OrderBy(Function(x) x.field2)
        'etc.'
    End Select
Else
    Select Case e.SortExpression
        Case "field1"
            query = query.OrderByDescending(Function(x) x.field1)
        Case "field2"
            query = query.OrderByDescending(Function(x) x.field2)
        'etc.'
    End Select
End If

必须有更好的方法来做到这一点,不是吗?我从网格中获取字段名称和排序方向 - 您认为有一种方法可以轻松地将其提供给LINQ查询,而无需逐字段翻译。谁有更好的方法?

1 个答案:

答案 0 :(得分:2)

您可能希望查看标题为Self Sorting GridView with LINQ Expression Trees

的文章