用C#对(我的)SQL结果进行排序的想法
本文关键字:排序 结果 SQL 我的 | 更新日期: 2023-09-27 18:25:13
目标
根据控制器传递的参数对MySQL提供的结果进行排序。
场景
我的应用程序上有一些控制器,其中一些控制器将数据库中的数据带给用户。
当我访问~/Products/Compare?Id=1&OrderBy=lowestPriceToBiggest
时,我想显示id为1
的产品按lowestPriceToBiggest
排序的比较。
总之,我想让我的过程的ORDER BY
根据URL传递的参数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
吗?如何将URL提供的字符串biggestPriceToLowest
转换为Desc
,作为参数发送到我的过程?
只是强调:在没有任何操作的情况下,我的控制器的orderBy
参数是将biggestPriceToLowest
(字符串)或lowestPriceToBiggest
(字符串)发送到Build.ProductsList()
,但我需要将这些字符串分别转换为Desc
或Asc
。
我已经考虑过了
我想制作一个switch
来将每个字符串转换为SQL代码,但我不知道这是一个好的做法,还是我所做的是正确/最好的方式。
最终,问题是什么
根据我的场景,我必须做什么?开关?有什么我不知道的把戏?
技术细节
我使用的是C#+MVC 4+Asp.Net+Razor Engine+MySQL。
在您的操作中,我会这样做,并根据需要添加案例语句
switch(orderBy)
{
case "priceASC": return productsList.OrderBy(x =>x.Price);
default: return productList
}
您可以使用ODATA进行查询:http://msdn.microsoft.com/pt-br/magazine/jj658971.aspxhttp://www.codeproject.com/Articles/393623/OData-Services
您将调用URL rest并获得结果