2017-03-06 506 views
2

也许我在我的实现或我的理解中丢失了一些东西。迭代返回列表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)) 
} 

所以你可以看到这会给出一个数组越界的异常,但我将如何能够实现这一点,它将只是循环回列表中的元素,而不是我实例化一个有21+个元素的列表只是一遍又一遍地重复同一个事物?

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

我试图到处搜索,甚至通过我的C#书籍,但找不到任何东西迭代回来通过列表或数组而不重置循环。

在此先感谢任何人的建议。

+0

它只是看起来像你得到的元素奇数。在这种情况下,我不++,但我+ = 2 .. – BugFinder

+0

您正在尝试访问项目“i + 2”和“i + 4”,当i = 3时它将引发越界异常。 – Zalomon

+0

@Zolomon如果你读到这个问题,Gary说他意识到它会导致出界异常。 –

回答

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

['Count'](https://msdn.microsoft.com/en-us/library/27b47ht3(v = vs.110).aspx)是属性而非方法 – UnholySheep

+0

@UnholySheep,如果您使用List,那么它的属性以及函数 – Lali

+0

请参见[列表 .Count](https://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs,cf7f4095e4de7646)行137和1050的来源 –