Is there a default method defined in .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.
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 Test { }
class Program
{
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();
}
}
The RemoveAll method should do the trick:
parameterList.RemoveAll(delegate (object o) { return o == null; });
Easy and without LINQ:
while (parameterList.Remove(null)) {};
List<EmailParameterClass> parameterList = new List<EmailParameterClass>{param1, param2, param3...};
parameterList = parameterList.Where(param => param != null).ToList();
I do not know of any in-built method, but you could just use linq:
parameterList = parameterList.Where(x => x != null).ToList();
The method OfType()
will skip the null values:
List<EmailParameterClass> parameterList =
new List<EmailParameterClass>{param1, param2, param3...};
IList<EmailParameterClass> parameterList_notnull =
parameterList.OfType<EmailParameterClass>();
Source: Stackoverflow.com