web-dev-qa-db-ja.com

ジェネリックリスト内のすべてのnull要素を一度に削除する方法は?

リスト内のnullであるすべての要素を削除するためのC#の.Netで定義されたデフォルトのメソッドはありますか?

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

パラメーターの一部がnullであるとしましょう。事前に知ることができないため、リストからそれらを削除して、null以外のパラメータのみが含まれるようにします。

99
pencilCake

次のものが必要になるでしょう。

List<EmailParameterClass> parameterList = new List<EmailParameterClass>{param1, param2, param3...};
parameterList.RemoveAll(item => item == null);
199
Lance

組み込みのメソッドは知りませんが、linqを使用できます。

parameterList = parameterList.Where(x => x != null).ToList();
37
Paul Hiles

RemoveAllメソッドはトリックを実行する必要があります。

parameterList.RemoveAll(delegate (object o) { return o == null; });
25
Mark Bell

メソッドOfType()はnull値をスキップします:

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

IList<EmailParameterClass> parameterList_notnull = 
    parameterList.OfType<EmailParameterClass>();
5
user3450075
List<EmailParameterClass> parameterList = new List<EmailParameterClass>{param1, param2, param3...};

parameterList = parameterList.Where(param => param != null).ToList();
4
Steve Danner

簡単でLINQなし:

while (parameterList.Remove(null)) {};
2
Tobias Knauss

別のシンプルでエレガントなオプションがあります:

parameters.OfType<EmailParameterClass>();

これにより、タイプEmailParameterClass以外のすべての要素が削除され、タイプnullのすべての要素が明らかに除外されます。

0
Ryan Naccarato