回答:
おそらく次のものが必要でしょう。
List<EmailParameterClass> parameterList = new List<EmailParameterClass>{param1, param2, param3...};
parameterList.RemoveAll(item => item == null);
RemoveAllメソッドは、トリックを実行する必要があります。
parameterList.RemoveAll(delegate (object o) { return o == null; });
メソッドOfType()はnull値をスキップします。
List<EmailParameterClass> parameterList =
new List<EmailParameterClass>{param1, param2, param3...};
IList<EmailParameterClass> parameterList_notnull =
parameterList.OfType<EmailParameterClass>();
簡単でLINQなし:
while (parameterList.Remove(null)) {};
Listすぐ隣のクラスRemoveAllにあるので、わかりやすくするためにこのメソッドをお勧めします。パフォーマンスが非常に重要である場合は、このアプローチを使用できます(ただし、角かっこを削除し、おそらく気付かない開発者にコメントを追加します)。
RemoveAllを受け取ったPredicateのでRemoveAll(x => x == null)、受け入れられたマークベルの回答に示されているように、を使用する必要があります。
別のシンプルでエレガントなオプションがあります:
parameters.OfType<EmailParameterClass>();
これにより、タイプEmailParameterClassではないすべての要素が削除され、タイプの要素が明らかに除外されますnull。
ここにテストがあります:
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();
}
}
EmailParameterClass、値はnull?