回答:
おそらく次のものが必要でしょう。
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
?