C# Jquery数据表、分页和mvc。从数据库中获取x数量

C# Jquery数据表、分页和mvc。从数据库中获取x数量,c#,jquery,asp.net-mvc,linq,datatables,C#,Jquery,Asp.net Mvc,Linq,Datatables,由于数据表有点问题,我需要sql表中的所有数据,但是在我们的站点上运行它会导致严重的延迟,因为它有8000多条记录。所以我尝试使用Take(10.ToList()

由于数据表有点问题,我需要sql表中的所有数据,但是在我们的站点上运行它会导致严重的延迟,因为它有8000多条记录。所以我尝试使用
Take(10.ToList()
例如,如果我将整个表数据加载到datatable中,它会有800多个页面。如果一次只获取10条记录,datatables将只显示一页。我需要一次获取10条记录,但同时显示800页的页面,当我单击“下一步”或特定页面时,它将加载这些记录。这可以从控制器/linq完成吗?无需在json/ajax通道上进行漫长的旅行

控制器

    public PartialViewResult Listing()
    {
        var model = _db.MyDataBase.Take(10).ToList();
查看

<table id="example" class="table table-striped table-bordered table-hover">
   <tbody>
     @foreach (var p in Model)
         {
          <tr class="gridRow" data-id="@p.MyId">
          <td>@p.Id</td>
              // etc....

@foreach(模型中的var p)
{
@p、 身份证
//等等。。。。
脚本:

<script type="text/javascript">
    $(function () {
        // Initialize Example
        $('#example').dataTable();
    });
</script>
public PartialViewResult Listing(int pageNumber, int pageResults)
{
    var model = _db.MyDataBase
        .OrderBy(row => row.ID)
        .Skip((pageNumber -1) * pageResults)
        .Take(pageResults)
        .ToList();
}

$(函数(){
//初始化示例
$(“#示例”).dataTable();
});

只需调整您的方法即可接收两个参数:pageNumberpageResults

而不是添加
Skip
跳过您不想显示的结果,并使用
Take
Skip
跳过的点开始获取结果

用法:

<script type="text/javascript">
    $(function () {
        // Initialize Example
        $('#example').dataTable();
    });
</script>
public PartialViewResult Listing(int pageNumber, int pageResults)
{
    var model = _db.MyDataBase
        .OrderBy(row => row.ID)
        .Skip((pageNumber -1) * pageResults)
        .Take(pageResults)
        .ToList();
}
  • 清单(1,20)
    -将给我们0-20的结果
  • 清单(3,20)
    -将给我们提供60-80个结果
  • 清单(5,10)
    -将给我们50-60个结果
代码:

<script type="text/javascript">
    $(function () {
        // Initialize Example
        $('#example').dataTable();
    });
</script>
public PartialViewResult Listing(int pageNumber, int pageResults)
{
    var model = _db.MyDataBase
        .OrderBy(row => row.ID)
        .Skip((pageNumber -1) * pageResults)
        .Take(pageResults)
        .ToList();
}

我建议您进行datatables.net的服务器端处理。请参阅提供
int pageNumber
int pageResults
的内容。将这两个参数传递给调用此方法的人。它们可以从用户执行的
POST
到达第2页,也可以从另一个需要Pa的方法到达ge 3有10个结果。您应该向我们提供更多信息,从一开始调用<代码>列表<代码>操作的客户端代码或服务器代码。您希望结果按?DateCreated?Author?排序,您希望结果按升序或降序排列?通常情况下,jquery datatables会对传入数据进行排序,ho出于测试目的,我们只需按ID升序即可。