3

LINQ に欠けていると思われる 1 つの点は、列をテキスト文字列で参照する方法です。たとえば、次のような並べ替えを設定した典型的な 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 イベント ハンドラーで 2 つの巨大な 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 に答える