[c#] 한 번에 일반 목록 내의 모든 null 요소를 제거하는 방법은 무엇입니까?

목록 내의 모든 요소를 ​​제거하기 위해 C # 용 .Net에 정의 된 기본 메서드가 null있습니까?

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

매개 변수 중 일부는 다음과 같습니다 null. 미리 알 수 없으며 목록에서 제거하여 null이 아닌 매개 변수 만 포함하도록하고 싶습니다.



답변

아마도 다음을 원할 것입니다.

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


답변

내장 방법은 모르지만 linq를 사용할 수 있습니다.

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


답변

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>();


답변

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

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


답변

쉽고 LINQ없이 :

while (parameterList.Remove(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();
    }
}