2015-12-29 3 views
-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

На последней странице я получаю 2 записи со страницы 3. Что случилось с моя логика?

+1

Как насчет того, чтобы установить некоторые точки останова и начать отладку? Если ваш последний «rowPerColumn» содержит более низкое значение, чем остальные, это приведет к последней странице ... Если это '4', то ваш' skip' будет '4 * 3', который равен 12, так что это действительно покажет записи с предыдущей страницы, где пропуск был «5 * 2». Объясните, что должна делать эта логика ('rowsPerColumn [i] * page'), иначе ответ будет« пропускать фиксированное количество записей »_. – CodeCaster

+0

Взгляните на этот вопрос: http://stackoverflow.com/questions/11463734/split-a-list-into-smaller-lists-of-n-size –

+0

Что это за группа GroupedLinksCategory? –

ответ

1

В последнем цикле, когда я = 3

пропуска равно 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 
    } 
    } 

} 
+0

так что это за решение? – Happy

+0

Теперь первая страница полностью пропущена. Почему мы не используем переменную «page» – Happy

+0

Я думаю, что она решит предыдущую ошибку –