C# C识别for循环中的项目

C# C识别for循环中的项目,c#,C#,我已经创建了一个for循环,用于每个部分显示8个项目,但我正在尝试识别循环中的某些项目。例如,我想识别前两项,然后是第五项和第六项,但似乎可以正确识别技术 for (int i = 0; i < Model.Count; i++){ var item = Model[i] if ((i + 1) % 3 != 0 && (i + 1) % 4 != 0){ // What i want to display here } el

我已经创建了一个for循环,用于每个部分显示8个项目,但我正在尝试识别循环中的某些项目。例如,我想识别前两项,然后是第五项和第六项,但似乎可以正确识别技术

for (int i = 0; i < Model.Count; i++){
    var item = Model[i]
    if ((i + 1) % 3 != 0 && (i + 1) % 4 != 0){
        // What i want to display here
    }
    else{
        // Something else I want to display
    }
}

这种方法适用于前四项,但对于后四项,它似乎不起作用

而不是在模上乱搞一个“便宜”的诀窍是只需要有一个计数器来跟踪您所在的位置并在每个循环上重置

for (int i = 0; i < Model.Count; i++){
    var item = Model[i]
    int aux = i%4;
    if (aux==0|| aux==1){
        // What i want to display here
    }
    else{
        // Something else I want to display
    }
}
// Dummy list to represent whatever 'Model' is
var model = new List<string> { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve" };

// A counter that keeps track of whether we're on 1, 2, 5 or 6
var counter = 1;

// Your loop
for (int i = 0; i < model.Count; i++)
{
    // Get the item as you've shown
    var item = model[i];

    // Check whether we want this item or not
    if (counter == 1 || counter == 2 || counter == 5 || counter == 6)
    {
        // Display
        Console.WriteLine("Displayed: " + item);
    }
    else
    {
        // Do whatever else
        Console.WriteLine("Skipped: " + item);
    }

    // Increase the counter
    counter++;

    // Reset the counter if we're into the next batch of 8
    if (counter > 8)
        counter = 1;
}   
输出:

显示:一个 显示:两个 跳过:三个 跳过:四个 显示:五个 显示:6 跳过:七 跳过:八 显示:9 显示:10 跳过:11 跳过:12


我承认它不是很“花哨”,但它工作得很好,也很容易理解。

与其到处乱搞模,“便宜”的诀窍是只要有一个计数器,它可以跟踪你在哪里,并在每个循环上重置

// Dummy list to represent whatever 'Model' is
var model = new List<string> { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve" };

// A counter that keeps track of whether we're on 1, 2, 5 or 6
var counter = 1;

// Your loop
for (int i = 0; i < model.Count; i++)
{
    // Get the item as you've shown
    var item = model[i];

    // Check whether we want this item or not
    if (counter == 1 || counter == 2 || counter == 5 || counter == 6)
    {
        // Display
        Console.WriteLine("Displayed: " + item);
    }
    else
    {
        // Do whatever else
        Console.WriteLine("Skipped: " + item);
    }

    // Increase the counter
    counter++;

    // Reset the counter if we're into the next batch of 8
    if (counter > 8)
        counter = 1;
}   
输出:

显示:一个 显示:两个 跳过:三个 跳过:四个 显示:五个 显示:6 跳过:七 跳过:八 显示:9 显示:10 跳过:11 跳过:12


我承认这不是很“花哨”,但它很好用,也很容易理解。

柜台不是为你做的。如果i==0 | | i==1?例如,是前两项。FYI按1进行模运算将始终返回0,因为所有整数都可以被1整除。为什么不简单:int[]takeindex={0,1,3,4};对于int i=0;i