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

时间:2015-12-29 11:41:10

标签: c# list paging

我正在循环列表中有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条记录。我的逻辑出了什么问题?

1 个答案:

答案 0 :(得分:1)

当i = 3

时,最后一次循环

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

        if (publishdatefrom.HasValue & !(publishdateto.HasValue))
        {

            DateTime d1 = publishdatefrom.Value.Date;
            DateTime d2 = d1.AddDays(1);
            products = products.Where(p => p.CreatedDate >= d1);

        }

        if (!(publishdatefrom.HasValue) & publishdateto.HasValue)
        {

            DateTime d1 = publishdateto.Value.Date;
            DateTime d2 = d1.AddDays(1);
            products = products.Where(p => p.CreatedDate >= d1 && p.CreatedDate < d2);

        }