目標。
コントローラーから渡されたパラメーターに応じて、MySQL から提供された結果を並べ替えます。
シナリオ。
アプリケーションにはいくつかのコントローラーがあり、そのうちのいくつかはデータベースからユーザー データを取得します。
アクセスすると、 でソートされた~/Products/Compare?Id=1&OrderBy=lowestPriceToBiggest
id との製品の比較を表示したい。1
lowestPriceToBiggest
要約すると、 URL によって渡されたORDER BY
パラメーターの値に従って、プロシージャーを動作させたいと考えています。OrderBy
スポットライト。
私ProductsController
は:
public ActionResult Products(Nullable<int> id, string orderBy)
{
List<Products> productsList = Build.ProductsList(id, orderBy);
return View(productsList);
}
私のクエリは次のとおりです。
Select product.Name As productName
From app_products As product
Where product.Id = 1
Order By product.Price Asc
ご覧のとおり、これまで、C# のコードと SQL のコードの間で、製品のリストを並べ替えるための通信は行われませんでした。私は今立ち往生しています。biggestPriceToLowest
パラメータによって提供されるようなものをSQLコードに変換するにはどうすればよいですか? つまり、orderBy
パラメーターは私biggestPriceToLowest
を返し、それをに変換する必要があります
[...]
Order By product.Price Desc
が見えますDesc
か?biggestPriceToLowest
URL によって提供される文字列を に変換しDesc
て、パラメータとしてプロシージャに送信するにはどうすればよいですか?
強調するだけです:操作なしorderBy
で、コントローラーのパラメーターはbiggestPriceToLowest
(string) またはlowestPriceToBiggest
(string) をまたはそれぞれBuild.ProductsList()
変換する必要がありDesc
Asc
私がすでに考えたこと。
各文字列を SQL コードに変換する を作成することを考えましたswitch
が、それが良い方法なのか、それとも私が行っていることが正しい/最善の方法なのかはわかりません。
結局のところ、質問は何ですか?
私のシナリオに基づいて、何を作成する必要がありますか? スイッチ?私が知識を持っていないいくつかのトリックはありますか?
技術的な詳細。
C# + MVC 4 + Asp.Net + Razor Engine + MySQL を使用しています。