显示列表中的X个项目

时间:2012-11-23 18:41:25

标签: c# list loops

我有一个项目列表,我想打印到控制台进行调试,但我只想一次显示3个项目,但这是在一个函数内,所以它需要知道它从哪里停止所以它可以从以前的3个项目我怎么能做到这一点?

static void list(Boolean nextPage)
{
    static List<Item> _items = new List<Item>();
    //if(nextPage) display next page            
    Console.WriteLine("Press numbers 1 - 3 to display more info on an item or press 4 for next page...\r\n");
    int count = 0;
    foreach (Item item in _items)
    {
        Console.WriteLine((count + 1) + ": Name: " + item.itemName + ", ");

        count++;
    }
    Console.WriteLine(("4: Next Page");
}

2 个答案:

答案 0 :(得分:4)

使你的函数非静态,添加一个变量来存储你到目前为止显示的最后一个项目,使用该变量来决定从哪里开始下一个列表,并在每次经过时将该值提前三功能

这是对你如何做到的粗略近似 - 这可能无法作为你的功能的复制粘贴替代品,但它应该让你知道该怎么做:

int lastPosition;

void list(Boolean nextPage) {
    if(!nextPage) {
        lastPosition = 0;
    }
    Console.WriteLine("Press numbers 1 - 3 to display more info on an item or press 4 for next page...\r\n");
    foreach (Item item in _items.Skip(lastPosition).Take(3))
    {
        Console.WriteLine((count + 1) + ": Name: " + item.itemName + ", ");
    }
    lastPosition += 3;
    Console.WriteLine(("4: Next Page");
}

答案 1 :(得分:0)

在退出方法时,在方法范围内创建的所有内容都会被删除,除非您向调用方法的人返回值。

所以,你有两个选择(或更多,但这里有两个):

private static Item lastItem;

这样,您可以在班级中存储显示的最后一项,并在下次检索它。 或

public static Item itemlist(Boolean nextPage, Item nextItem)
{
    // Some logic
    return lastItem;
}

让任何调用你的方法的人都可以处理变量。