2013-06-03 4 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); 

В настоящее время я хочу удалить Arraylinked [2] в мой список arraylinkedlist. Как это можно сделать ???

+2

Вы даже посмотрели документацию? http://msdn.microsoft.com/en-us/library/he2s3bh7.aspx –

+0

Вы даже уверены, что хотите «LinkedList»? Почему не только стандартный «Список »? – Arran

+0

не следует использовать индекс для доступа к элементам 'LinkedList'. – 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

Объяснение нисходящего потока было бы неплохо ... –

+1

Не мой DV, но в целом вы захотите изменить структуру данных из массива на что-то еще, если вам нужна эта функциональность, а не постоянно воссоздавать весь массив каждый раз, когда вам нужно добавить/удалить значения. – Servy

Смежные вопросы