我有一个称为任务的变量:
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个数组的最佳方法是什么?
答案 0 :(得分:1)
由于您已在注释中阐明,您真正想要做的是在每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]);
}
答案 1 :(得分:1)
您可以使用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
}