C# - 리스트 필터링

리스트의 요소들 중에 특정 조건에 맞는 요소들만 필터링하여 리스트에 저장하는 방법을 소개합니다.

1. FindAll()을 이용한 방법

List.FindAll(match)은 리스트의 요소들 중에 match 함수와 일치하는 요소들만 새로운 List로 리턴합니다.

아래와 같이 양수만 필터링하는 match 함수를 만들어 FindAll()로 전달하여 필터링할 수 있습니다.

using System;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            List<int> list = new List<int> {-3, -2, -1, 0, 1, 2, 3};

            List<int> positive = list.FindAll(x => x > 0);
            Console.WriteLine(String.Join(", ", positive));
        }
    }
}

Output:

1, 2, 3

2. Where()를 이용한 방법

LINQ의 Where()를 이용한 방법으로, 특정 조건을 만족하는 요소들만 필터링하여 IEnumerable로 리턴합니다. IEnumerable은 ToList()를 이용하여 리스트로 변환할 수 있습니다.

아래와 같이 Where()를 사용하여 정수 중에 양수만 필터링하는 코드를 작성할 수 있습니다.

using System;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            List<int> list = new List<int> {-3, -2, -1, 0, 1, 2, 3};

            List<int> positive = list.Where(x => x > 0).ToList();
            Console.WriteLine(String.Join(", ", positive));
        }
    }
}

Output:

1, 2, 3
Loading script...
codechachaCopyright ©2019 codechacha