2013-04-02 200 views
0

我一直在試圖將列表A中的前兩個元素「傳輸」到列表B,而不復制它們。從一個列表添加到另一個列表

在開始時,列表A有四個int值。最後我希望列表A和B都有2個int值。

我想是這樣的:

int a = 1; 
int b = 2; 
int c = 3; 
int d = 4; 

TestA.Add(a); 
TestA.Add(b); 
TestA.Add(c); 
TestA.Add(d); 

for (int i=0; i<2; i++) 
{ 
    TestB.AddRange(TestA[i]); 
} 

我得到一個IEnummerable轉換錯誤。我確信我以非常天真的方式做到這一點,我很感謝這裏的一些幫助。謝謝。

+0

你在哪裏聲明'TestB'?如果你想添加所有相關的代碼,將會有所幫助。請說明'TestA和TestB'是如何定義的?爲什麼TestA [i]後面有'''''' – MethodMan

回答

3

簡單的Take/Skip組合有什麼問題?

TestB = TestA.Take(2).ToList(); 
TestA = TestA.Skip(2).ToList(); 

Enumerable.Take - 從收集開始時取N個元素。

Enumerable.Skip - 從收集開始跳過N個元素並取其他所有元素。

+0

謝謝!我在互聯網上搜索了這個,我想知道爲什麼我沒有找到任何關於這個。另外,我很好奇,爲什麼這個方法叫做'skip'?它有什麼作用?再次感謝! – Turbosheep

+0

我已經用一點解釋更新了我的答案。希望它有幫助。 – MarcinJuraszek

+0

感謝您的幫助。但是如果我稍後添加一些元素回到A會怎麼樣呢?它會繼續跳過前兩個元素嗎?因爲那會很糟糕。或者你的意思是Skip()跳過前兩個,取其他人,然後重新排列整個列表以僅取值? – Turbosheep

相關問題