Как удалить все нулевые элементы из общего списка за один раз? - PullRequest
99 голосов
/ 18 июня 2010

Существует ли в .Net метод по умолчанию, определенный для C #, чтобы удалить все элементы в списке, которые null?

List<EmailParameterClass> parameterList = new List<EmailParameterClass>{param1, param2, param3...};

Допустим, некоторые из параметров null;Я не могу знать заранее, и я хочу удалить их из своего списка, чтобы он содержал только те параметры, которые не равны нулю.

Ответы [ 7 ]

198 голосов
/ 18 июня 2010

Возможно, вам понадобится следующее.

List<EmailParameterClass> parameterList = new List<EmailParameterClass>{param1, param2, param3...};
parameterList.RemoveAll(item => item == null);
37 голосов
/ 18 июня 2010

Я не знаю ни одного встроенного метода, но вы могли бы просто использовать linq:

parameterList = parameterList.Where(x => x != null).ToList();
24 голосов
/ 18 июня 2010

Метод RemoveAll должен помочь:

parameterList.RemoveAll(delegate (object o) { return o == null; });
5 голосов
/ 25 октября 2015

Метод OfType() пропустит нулевые значения:

List<EmailParameterClass> parameterList =
    new List<EmailParameterClass>{param1, param2, param3...};

IList<EmailParameterClass> parameterList_notnull = 
    parameterList.OfType<EmailParameterClass>();
4 голосов
/ 18 июня 2010
List<EmailParameterClass> parameterList = new List<EmailParameterClass>{param1, param2, param3...};

parameterList = parameterList.Where(param => param != null).ToList();
2 голосов
/ 22 июня 2016

Легко и без LINQ:

while (parameterList.Remove(null)) {};
0 голосов
/ 10 марта 2019

Существует еще один простой и элегантный вариант:

parameters.OfType<EmailParameterClass>();

Это удалит все элементы, не относящиеся к типу EmailParameterClass, что, очевидно, отфильтрует все элементы типа null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...