2011-12-15 70 views
1

我想對從我的視圖中顯示的數據庫中查詢的產品的價格和數量進行排序。 我向URL的參數字符串(產品?可用性= availabilityLowtoHigh & priceSort = priceLowtoHigh & tab = 2)拋出選擇。如何在asp.net mvc中使用LinQ to SQL從數據庫中選擇項目#

這是LINQ-SQL,我用:

public IList<Item> Sort(string availability,string priceSort) 
    { 
     IEnumerable<Item> ien_item; 
     if (availability == "availabilityLowtoHigh" && priceSort == "priceLowtoHigh") 
     { 
      ien_item = from i in this.DataContext.Items 

          orderby i.Quantity ascending 
          orderby i.Price ascending 
          select i; 
     }else{ 
     ien_item = from i in this.DataContext.Items 
         orderby i.Quantity descending 
         orderby i.Price descending 
         select i; 
     } 
    } 

說明:如果查詢字符串可用性參數==「availabilityLowtoHigh」和priceSort ==「priceLowtoHigh」,所以該產品將在展會通過對具有更少數量的產品和價格便宜的產品進行分類來達到昂貴的價格。

我可以在查詢中使用兩次orderby嗎?

回答

1

正確的語法有orderby關鍵字一次;分隔多個排序用逗號:

ien_item = from i in this.DataContext.Items 
      orderby i.Quantity ascending, i.Price ascending 
      select i; 

ien_item = from i in this.DataContext.Items 
      orderby i.Quantity descending, i.Price descending 
      select i; 
0

在你的情況下使用linq是非常多餘的。你可以簡單的寫:

ien_item = DataContext.Items 
.OrderByDescending(c => c.Quantity) 
.ThenByDescending(c => c.Price); 

正如你可以看到一個簡單的λ是綽綽有餘,沒必要訴諸LINQ(這將最終轉化爲拉姆達反正)。

+0

@MMatteo莫斯卡:那麼,如何通過提升有關訂單? – Nothing 2011-12-15 08:17:36

+0

+1。只是一個評論:即使你是正確的,這是一個簡單的味道問題,最終結果是相同的(也在表現)。 – Pleun 2011-12-15 09:27:51

相關問題