How to remove all the null elements inside a generic list in one go?
Is there a default method defined in 开发者_StackOverflow社区.Net for C# to remove all the elements within a list which are null
?
List<EmailParameterClass> parameterList = new List<EmailParameterClass>{param1, param2, param3...};
Let's say some of the parameters are null
; I cannot know in advance and I want to remove them from my list so that it only contains parameters which are not null.
You'll probably want the following.
List<EmailParameterClass> parameterList = new List<EmailParameterClass>{param1, param2, param3...};
parameterList.RemoveAll(item => item == null);
I do not know of any in-built method, but you could just use linq:
parameterList = parameterList.Where(x => x != null).ToList();
The RemoveAll method should do the trick:
parameterList.RemoveAll(delegate (object o) { return o == null; });
The method OfType()
will skip the null values:
List<EmailParameterClass> parameterList =
new List<EmailParameterClass>{param1, param2, param3...};
IList<EmailParameterClass> parameterList_notnull =
parameterList.OfType<EmailParameterClass>();
There is another simple and elegant option:
parameters.OfType<EmailParameterClass>();
This will remove all elements that are not of type EmailParameterClass
which will obviously filter out any elements of type null
.
Here's a test:
class Program
{
class Test { }
static void Main(string[] args)
{
var list = new List<Test>();
list.Add(null);
Console.WriteLine(list.OfType<Test>().Count());// 0
list.Add(new Test());
Console.WriteLine(list.OfType<Test>().Count());// 1
Test test = null;
list.Add(test);
Console.WriteLine(list.OfType<Test>().Count());// 1
Console.ReadKey();
}
}
List<EmailParameterClass> parameterList = new List<EmailParameterClass>{param1, param2, param3...};
parameterList = parameterList.Where(param => param != null).ToList();
Easy and without LINQ:
while (parameterList.Remove(null)) {};
精彩评论