在列表中分页时获取重复记录

问题描述 投票:0回答:1

我正在循环播放有 19 条记录的列表。我想要 4 页的记录。第一页将有 5 条记录,第二页将有 5 条记录,第三页将有 5 条记录,第四页将有 4 条记录。

所以我如下循环

for (int i = 0; i < totalColumnToShow; i++)
{

      var page = i + 1;
      var skip = rowsPerColumn[i] * (page - 1);
      PagedList =GroupedLinksCategory.Select(y => new copiedList { Title = y.Title, ID = y.ID, Name= y.Name }).Skip(skip).Take(rowsPerColumn[i]).ToList();

      foreach (var row in PagedList)
      {
         if (row.Name== "Test")
         {
            //my Logic
         }
         else
         {
             //my Logic
         }
      }

 }

变量 rowsPerColumn 是包含 4 条记录的数组,如

rowsPerColumn[0] = 5
rowsPerColumn[1]= 5
rowsPerColumn[2] = 5
rowsPerColumn[3]= 4

在最后一页,我从第 3 页获取 2 条记录。我的逻辑出了什么问题?

c# list pagination
1个回答
1
投票

最后一次循环当 i=3 时

skip 等于 12 而不是 15。这就是为什么你会得到重复值。

int Totalskip=0;
for (int i = 0; i < totalColumnToShow; i++)
{

  if(i>0){
  var skip = rowsPerColumn[i-1];
  Totalskip =Totalskip+ skip;
  }
  PagedList =GroupedLinksCategory.Select(y => new copiedList { Title = y.Title, ID = y.ID, Name= y.Name }).Skip(Totalskip).Take(rowsPerColumn[i]).ToList();

  foreach (var row in PagedList)
  {
     if (row.Name== "Test")
     {
        //my Logic
     }
     else
     {
         //my Logic
     }
  }

}
© www.soinside.com 2019 - 2024. All rights reserved.