2016-05-22 5 views
0

Кажется, что уже несколько раз ответили, но он не работает для меня ...Удалить null из строки списка C#

У меня есть список, называемый combox. Я хочу удалить нулевые элементы.

я писал:

List<String> comboxTable = new List<string>(); 
    comboxTable = comboxTable.RemoveAll(item => item == null); 

, но я получаю:

Ошибка 14 Не удается неявно преобразовать тип 'Int' в 'System.Collections.Generic.List'

Я пробовал этот:

comboxTable = comboxTable.RemoveAll(string.IsNullOrWhiteSpace); 

Такая же ошибка. Где находится "int"? Что я делаю неправильно?

(Combox получает его строковое значение где-нибудь в коде и имеет NULLS здесь и там. Я хочу, чтобы удалить их)

+0

'comboxTable.RemoveAll (item => item == null);' достаточно, не присваивать .... 'int' - это возвращаемый тип' RemoveAll', который является количеством удаленных элементов .. https: // msdn.microsoft.com/en-us/library/wdka673a%28v=vs.110%29.aspx –

ответ

5

Проверьте documentation. RemoveAll() возвращает целое число, и ваш код пытается бросить его в объект типа System.Collections.Generic.List

Измените код следующим образом:

comboxTable.RemoveAll(string.IsNullOrWhiteSpace); 

и он будет работать. Элементы null будут удалены. RemoveAll работает на самом случае он не возвращает новый один

+0

... а также пустые строки и "". Это не была задача. Дело в том, что RemoveAll() модифицирует сам экземпляр и возвращает количество удаленных элементов. –

+0

@ g.pickardou Добавлено дополнительное объяснение – dimlucas

1

Использование Linq:

List<String> comboxTable = new List<string>(); 
comboxTable = comboxTable.Where(m => !string.IsNullOrEmpty(m)).ToList(); 
+0

Здесь нет необходимости в linq, а также создание нового экземпляра списка - это служебные данные –

+0

@ g.pickardou ... принято –

4

RemoveAll() изменяет сам экземпляр и возвращает количество элементов удален

1

Вы также можете сделать что-то как ниже код comboxTable.RemoveAll (var => String.IsNullOrEmpty (var));

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