用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(),但我需要将这些字符串分别转换为DescAsc

我已经考虑过了

我想制作一个switch来将每个字符串转换为SQL代码,但我不知道这是一个好的做法,还是我所做的是正确/最好的方式。

最终,问题是什么

根据我的场景,我必须做什么?开关?有什么我不知道的把戏?

技术细节

我使用的是C#+MVC 4+Asp.Net+Razor Engine+MySQL。

用C#对(我的)SQL结果进行排序的想法

在您的操作中,我会这样做,并根据需要添加案例语句

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并获得结果