【问题标题】:ASP MVC Paging with LINQ?使用 LINQ 的 ASP MVC 分页?
【发布时间】:2014-06-20 13:35:37
【问题描述】:

我有 100 条记录。我想要 LINQ:

int pageNumber = get from user; // for example 2 , 3 ,...
if pageNumber == 2
   return records 20 to 29

谢谢!

【问题讨论】:

标签: c# asp.net linq asp.net-mvc-4


【解决方案1】:

您想要的可能是以下内容:

var itemsToShow = items.OrderBy(p => p.Id)
                       .Skip((currentPage - 1) * numPerPage)
                       .Take(numPerPage);

您通过Id 属性对页面进行排序,并且您有变量currentPage 保存当前页面的编号,numPerPage 保存每页的项目数。

您可能希望创建一个包含分页信息的类型,以使您的生活更轻松。类似的东西

public class PagingInfo
{
     public int ItemsPerPage { get; set; }
     public int NumItems { get; set; }
     public int CurrentPage { get; set; }
     public int TotalPages
     {
         get
         {
             return Math.Ceiling((double)NumItems/ItemsPerPage);
         }
     }
}

那么您的currentPage 将是pagingInfo.CurrentPage,而您的numPerPage 将是pagingInfo.ItemsPerPage。此外,您还有一个属性可以获取有用的页面总数。这是一种很好的方法,因此您可以在视图模型上传输有关分页的信息。

【讨论】:

  • 请去掉最后一句,没必要,是items btw ;)
【解决方案2】:
int Page = 1;
int RecordsPerPage = 10;
var q = yourQuery.Skip((Page - 1) * RecordsPerPage).Take(RecordsPerPage);

【讨论】:

    【解决方案3】:

    我建议使用 PagedList.MVC,它是 Nuget 上提供的免费库女巫: 这是一个例子: 这将是你的行动:

     public ActionResult Index(int page = 1)
        {
            //_db is my sample data context but paged list works for any IEnumerable
            //since this is an extension method
            var model = 
                _db.Comments
                .OrderByDescending(c => c.Date)
                .ToPagedList(page, 10);
    
            return View(model);
        }
    

    我将视图的模型设置为 IPagedList,这是视图: 好在它会自动生成页面链接。

    <div class="pager">
        @Html.PagedListPager(Model, page => Url.Action("Index", new { page }),    PagedListRenderOptions.ClassicPlusFirstAndLast)
    </div>
    

    其可定制(通过 css)。 这是nuget页面: PagedList.MVC nuget page

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-12
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      相关资源
      最近更新 更多