迭代回到列表C#的开头

时间:2017-03-06 08:46:15

标签: c#

也许我在实施中缺少一些东西,或者我的理解。

所以我有一个列表的一定数量的元素,特别是在这种情况下7,我需要从这些元素的设置模式中获取信息。

有趣的是,元素实际上可以永远重复,所以我没有创建14或21等元素的列表,而是认为有一种方法可以用7来做。

例如,

LinkedList<string> list = new LinkedList(); 
list.add(); etc........
string combinedElements;    

for(int i = 0; i < list.Length; I++)
{
   combinedElements += (list.ElementAt(i) + list.ElementAt(i + 2) + list.ElementAt(i+4))
}

所以你可以看到这会给出一个Array out of bounds异常,但是我怎么能够以一种只循环遍历列表元素的方式来实现它,而不是我实例化一个列表21个元素只是一遍又一遍地重复相同的事情?

例如,如果列表中填充了1,2,3,4,5,6,7。我希望它能为每个元素获得所有其他元素(两次)。所以我希望它返回1,3,5 2.4.6 3.5.7 4.6.1 5.7.2等

我尝试在任何地方搜索,甚至通过我的C#书籍,但在没有重置循环的情况下迭代回列表或数组时找不到任何东西。

提前感谢任何人可以给予的建议。

1 个答案:

答案 0 :(得分:1)

正如@UnholySheep评论的那样,最好使用模块化功能,如

List<int> list = new List<int>() { 1, 2, 3, 4, 5, 6, 7 };
string combinedElements = "";
for (int i = 0; i < list.Count(); i++)
  {
     string currentSet = (list.ElementAt(i) + "," + list.ElementAt((i + 2) % list.Count()) 
                              + "," + list.ElementAt((i + 4) % list.Count()));
     Console.WriteLine(currentSet);
     //combinedElements += currentSet + " ";
  }