ASP.NET цикл через массив, получая 28 одновременно - PullRequest
0 голосов
/ 25 января 2019

У меня есть эта переменная, называемая задачами:

var tasks = new List<string>();

Сейчас у задач есть счет 81, но это может измениться в будущем.

Я пытаюсь сделать 3циклы задач получают по 28 одновременно:

@for (var i = 0; i < 28; i++)
{
}

@for (var i = 28; i < 56; i++)
{
}

@for (var i = 56; i < 81; i++)
{
}

Мне не нравится, что я жестко закодировал числа, поэтому мой вопрос использует tasks.Count Как лучше всего было бы пройти через массив, получая28 за один раз?

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Вы можете использовать Linq, чтобы взять и пропустить определенную сумму.

var tasks = new List<string>();

var groupSize = tasks.Count() / 3;

var groupOne = tasks.Take(groupSize);
var groupTwo = tasks.Skip(groupSize).Take(groupSize);
var groupThree = tasks.Skip(groupSize * 2).Take(groupSize);

foreach(var item in groupOne)
{
    // Do Something
}


foreach(var item in groupTwo)
{
    // Do Something
}


foreach(var item in groupThree)
{
    // Do Something
}
0 голосов
/ 25 января 2019

Поскольку вы пояснили в комментариях, что вы действительно хотите делать что-то новое после каждого блока из 28 (или чего-то еще) элементов.Для этого вы можете использовать оператор %.Например:

//Keep this constant somewhere else or maybe in a config value so it is easily changed
private const int TasksPerPage = 28;

А теперь мы можем зациклить ваши данные при выводе разрыва страницы после 28 элементов:

for(var i = 0; i < tasks.Count(); i++)
{   
    //You can remove the i>0 check if you want to output a break at the start
    if (i % TasksPerPage == 0 && i > 0)
    {
        Console.WriteLine("Page Break");
    }

    Console.WriteLine(tasks[i]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...