2011-12-15 49 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

相关问题