Czy istnieje domyślna metoda zdefiniowana w .Net dla C #, aby usunąć wszystkie elementy z listy, które są null
?
List<EmailParameterClass> parameterList = new List<EmailParameterClass>{param1, param2, param3...};
Powiedzmy, że niektóre parametry są null
; Nie mogę wiedzieć z góry i chcę je usunąć z mojej listy, aby zawierała tylko parametry, które nie są zerowe.
Nie znam żadnej wbudowanej metody, ale możesz po prostu użyć linq:
źródło
parameterList
jest już Listą, ponieważ spowoduje to niepotrzebne utworzenie nowej kopii. W takim przypadku użyjRemoveAll
metody tak, jak sugerują inni.Array
.Metoda RemoveAll powinna załatwić sprawę:
źródło
Metoda
OfType()
pominie wartości null:źródło
OfType
wybiera obiekty określonego typu, nie myśląc, że nie będzie zawierałnull
wartości ... Więc jestem trochę zmęczony wprowadzaniem tego do mojego własnego kodu.źródło
Łatwo i bez LINQ:
źródło
List
klasie tuż obokRemoveAll
, więc polecam ją dla jasności. Jeśli wydajność okazała się kluczowa, możesz zastosować to podejście (chociaż usunąłbym nawiasy i prawdopodobnie dodałbym komentarz dla nieświadomych programistów).RemoveAll
otrzymałaPredicate
, więc powinieneś użyćRemoveAll(x => x == null)
, jak widać w zaakceptowanej odpowiedzi Marka Bella.Jest jeszcze jedna prosta i elegancka opcja:
Spowoduje to usunięcie wszystkich elementów, które nie są typu,
EmailParameterClass
co oczywiście odfiltruje wszelkie elementy typunull
.Oto test:
źródło
EmailParameterClass
i będzie mieć tylko wartość równąnull
?