3

LINQ 对我来说似乎缺少的一件事是一种通过文本字符串引用列的方法。例如,我有一个典型的 GridView 设置了这样的排序(数据源绑定到代码隐藏中的 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 查询,而无需逐个字段地翻译它。有人有更好的方法吗?

4

1 回答 1

2

您可能想查看这篇题为使用 LINQ 表达式树的自排序 GridView 的文章

于 2008-10-22T14:16:47.827 回答