2012-11-23 79 views
0

我有一个项目列表,我想打印到控制台进行调试,但我只想一次显示3个项目,但这是一个功能,因此它需要知道在哪里它离开了,所以它可以从以前的3个项目开始,我怎么能做到这一点?从列表中显示X个项目

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"); 
} 

回答

4

让你的函数非静态,添加一个变量来存储你迄今所显示的最后一个项目,使用该变量来决定从哪里开始下上市,并通过每次3推动这一值你会经历这个功能。

这里是一个粗略的估计你如何能做到这一点 - 这将可能无法正常工作,一个复制粘贴更换的功能,但它应该给你做什么的想法:

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"); 
} 
+0

非常感谢你这工作完美 –

0

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

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

private static Item lastItem; 

有了这个,你保存你的类中的最后一项显示和检索它的下一次内部。 或

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

而让任何人调用你的方法来处理变量。