2013-06-03 2 views
-2

C#에서 연결된 목록의 배열을 선언하고 이제는 인덱스 i에서 첫 번째 또는 마지막과 같지 않은 요소를 제거하려고합니다. 내가 어떻게 해???연결된 목록의 배열 C#

LinkedList<DataTable>[] Arraylinked= new LinkedList<DataTable[1000];      
Arraylinked[0].AddLast(data table11);     
Arraylinked[1].AddLast(data table12); 
Arraylinked[2].AddLast(data table13); 
Arraylinked[3].AddLast(data table14); 

는 지금, 나는 [2] 내 arraylinkedlist에 Arraylinked을 제거 할. 어떻게 할 수 있니?

+2

문서를 보셨습니까? http://msdn.microsoft.com/en-us/library/he2s3bh7.aspx –

+0

'LinkedList'를 원하십니까? 왜 그냥 표준'List '이 아니겠습니까? – Arran

+0

'LinkedList'의 원소에 접근하기 위해 index를 사용해서는 안됩니다. – Mayank

답변

0
DataTable node = Arraylinked.First; 
int index = 0; 
while (node != null) { 
    DataTable nextNode = node.Next; 
    if (index == 2) { 
     Arraylinked.Remove(node); 
    } 
    node = nextNode; 
    index++; 
} 

또는 당신은 인덱스를 몰라도 참조 항목을 제거하기 위해 서로 다른 조건과 같은 코드를 사용할 수 있습니다.

0

배열에서 "제거"할 수 없습니다. Linq에를 사용하여

당신은 인덱스에 의해 필터링 시도 할 수 있습니다, 그러나

Arraylinked = Arraylinked 
    .Where((idx, item) => idx != 2) 
    .ToArray(); 

이것은 아주 새로운 배열을 만드는 비용을 발생시킨다.

+0

Downvote 설명이 좋을 것입니다 ... –

+1

내 DV가 아니지만 필요할 때마다 전체 배열을 지속적으로 재생성하는 대신이 기능이 필요한 경우 일반적으로 데이터 구조를 배열에서 다른 것으로 변경하려고합니다. 값을 추가/제거합니다. – Servy