2014-09-26 67 views
0

如何我可以从数据库中降反向查询(降序)

public IQueryable<Product> GetProduct([QueryString("productID")] int? productId) 
{ 
    var _db = new WingtipToys.Models.ProductContext(); 
     IQueryable<Product> query = _db.Products; 
     if (productId.HasValue && productId > 0) 
     { 
      query = query.Where(p => p.ProductID == productId); 
     } 
     else 
     { 
      query = null; 
     } 
     return query; 
} 

它给我像得到的数据{1,2,3,...} 我希望它像{N, n-1,....,2,1} 我试图改变查询语句,我仍然是初学者,我不知道该函数可以做什么! 你可以帮我吗!

+0

而'Product.ProductID'不是主键? – DavidG 2014-09-26 12:51:04

回答

0

你必须使用OrderByDescending

query = query 
    .Where(p => p.ProductID == productId) 
    .OrderByDescending(p => p.IntColumnYouWantToUse); 
+0

嘿添,我们可以做_db.Products.OrderByDescending(p => p.productId)本身,对不对? – Mukund 2014-09-26 13:00:34

+0

@Mukund你可以这样做,但由于Where子句已经将其限制为具有单个productID的项目。 – DavidG 2014-09-26 13:03:56

+0

@Mukund:是的,但我认为OP正在尝试不同的东西。否则,即使他通过一个“ProductID”进行过滤,他也不会获得多个项目。所以他想要订购的柱子是不同的柱子。 – 2014-09-26 13:05:21

0

我建议你使用:OrderByDescending
但是,如果您只是想在没有订购的情况下翻转列表,则还可以使用.Reverse()反转列表。但OrderByDescending将是最佳选择。
Reverse()

+3

这将在O(n)时间内对内存中的项目进行重新排序,因此与使用OrderByDescending相比,它非常慢,OrderByDescending将在SQL服务器上执行并按所需顺序返回项目。 – 2014-09-26 12:56:44