2017-03-06 101 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的來源 –