목록 내의 모든 요소를 제거하기 위해 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();
}
}