2014-09-26 66 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