2

ASP.NET ページがあり、それは Handler クラスに関連付けられています。このハンドラー内の反復コードの量を制限したいと考えています。現時点では、結合された 2 つのテーブルのデータを含む DataTable を返すメソッドがあります。

Public Shared Function GetAllRecords() As DataTable
        Dim dt As New DataTable

        試す
            コンテキストを New QREntities() として使用する
                Dim records = (From record In context.QRRecords
                          広告に参加 コンテキスト内.QRAdvertisements On record.adId 等しい advert.adId
                          record.recId、record.hitDate、record.hitLocation、record.ipAddress、advert.adRedirectUrl、advert.adType、advert.adData を選択します。
                          並べ替え hitDate 降順).ToList()

                '列ヘッダーとその受け入れられるデータ型を設定します
                dt = SetDataTableColumns()

                For Each r In レコード
                    dt.Rows.Add(r.recId、r.hitDate、r.hitLocation、r.ipAddress、r.adRedirectUrl、r.adType、r.adData)
                次
            使用終了
        ex を例外としてキャッチ
            何も返さない
        エンドトライ

        dt を返す
    終了機能

ここで、個人が選択した任意の列でソートできるようにしたいと思います。値をパラメーターとして渡し、select ステートメントでチェックし、関連付けられた列を Order By で使用することを検討していましたが、これに関する問題は、Dim レコードは匿名型のリストであるため、できないことを意味します私が知っていることを事前に宣言してください。私の質問は、これを達成するための最良の方法は何ですか?

クエリ オブジェクト、カスタム式、およびクエリ セットを調べましたが、それらが道に迷っているようです。

前もって感謝します!

4

1 に答える 1

0

ダイナミック Linq ライブラリの OrderBy 関数を使用すると、列と方向を動的に並べ替えることができます。

于 2012-09-05T21:43:43.397 に答える