如何使用Linq to Sql和ASP.NET MVC实现排序?

3
我有一个ASP.NET MVC应用程序,其中我正在显示产品列表。
 // Product Controller
 public ActionResult List(string sort, int page)
 {
     var products = _productService.GetProducts(page, sort);
     return View(products);
 }

 // ProductService.cs
 public IEnumerable<Products> GetProducts(int pageIndex, string sort)
 {
     return _productRepository.GetProducts(pageIndex, 50, sort);
 }


 // ProductsRepository.cs
 public IEnumerable<Products> GetProducts(int pageIndex, int pageSize, string sort)
 {
     using(var db = new ShopDataContext())
     {
          return db.Products.OrderBy(??).Skip(pageIndex * pageSize).Take(pageSize).ToList();
     }
 }

我有一个非常简单的服务层和存储库。

我如何通过从我的操作的查询字符串中获取的任意排序字符串/表达式对我的Linq to SQL查询进行排序?

/products?sort=hot&page=2

2个回答

2
您可以使用动态LINQ来实现此操作,然后可以简单地进行类似于OrderBy("Hot ASC")的操作。请查看下面的链接:Dynamic LINQ

1

这个页面会更好地帮助你

http://www.asp.net/entity-framework/tutorials/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application

你也可以使用pagedlist.mvc来创建分页列表

https://github.com/TroyGoode/PagedList

这非常简单,如果您安装了MVC版本,您只需要在视图中编写此代码,然后所有页面和下一页按钮都会自动生成。

@Html.PagedListPager((IPagedList)ViewBag.OnePageOfProducts, page => Url.Action("Index", new { page = page }))

如果您在任何步骤上遇到困难,请随时提问。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接