繁体   English   中英

如何在ASP.NET MVC C#中使用LinQ to SQL对从数据库中选择的项目进行排序

[英]How to sort item selected from database using LinQ to SQL in asp.net mvc c#

我想对从数据库查询的产品的价格和数量进行排序,以显示在视图中。 我将选择扔到URL的参数字符串中(产品?availability = availabilityLowtoHigh&priceSort = priceLowtoHigh&tab = 2)。

这是我使用的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;
      }
  }

详细信息:如果查询字符串的参数available ==“ availabilityLowtoHigh”和priceSort ==“ priceLowtoHigh”,那么该产品将通过对数量较少,价格从低到高的产品进行排序来显示在页面中。

我可以在查询中两次使用orderby吗?

正确的语法只有一次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; 

在您的情况下使用linq是高度冗余的。 您可以简单地写:

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

如您所见,简单的lambda绰绰有余,无需诉诸linq(无论如何最终都会转换为lambda)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM