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 クエリに簡単にフィードする方法があると思います。誰でも良い方法がありますか?