目标。
根据控制器传递的参数对 MySQL 提供的结果进行排序。
情景。
我的应用程序上有一些控制器,其中一些控制器将数据库中的用户数据带入用户。
当我访问时,~/Products/Compare?Id=1&OrderBy=lowestPriceToBiggest
我想显示产品与 id1
排序的比较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) toBuild.ProductsList()
,但我需要将这些字符串Desc
orAsc
。
我已经想到了什么。
我想switch
将每个字符串转换为 SQL 代码——但我不知道这是否是一种好的做法,或者我正在做的事情是否是正确/最佳的方法。
最终,问题是什么?
根据我的情况,我必须做什么?一个开关?存在一些我不知道的技巧吗?
技术细节。
我正在使用 C# + MVC 4 + Asp.Net + Razor Engine + MySQL。