programing

일반 목록 내의 모든 Null 요소를 한 번에 제거하려면 어떻게 해야 합니까?

megabox 2023. 4. 24. 23:00
반응형

일반 목록 내의 모든 Null 요소를 한 번에 제거하려면 어떻게 해야 합니까?

에 정의되어 있는 디폴트 방식이 있습니까?Net for C#: 목록 내의 다음과 같은 모든 요소를 삭제합니다.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; });

심플하고 우아한 옵션이 또 있습니다.

parameters.OfType<EmailParameterClass>();

이렇게 하면 유형이 아닌 모든 요소가 제거됩니다.EmailParameterClass분명히 어떤 유형의 요소도 걸러낼 것이다.null.

다음은 테스트입니다.

class Program
{
    class Test { }

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

방법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)) {};

언급URL : https://stackoverflow.com/questions/3069748/how-to-remove-all-the-null-elements-inside-a-generic-list-in-one-go

반응형