본문 바로가기

IT개발/C#

LINQ - Objects (List, Array, Dictionary, Collection)

LINQ to Objects
LINQ.zip
0.23MB

LINQ to Objects 주요 특징

  1. Target Memory : Collection 등 메모리 내의 객체를 쿼리할 때 사용한다.
  2. Deferred Execution : 실제로 해당 데이터를 사용하거나 가공하기 전까지 쿼리를 처리하지 않는다.
  3. Filtering : where, select, order by 등을 이용하여 쉽게 데이터 필터링이 가능하다.
  4. Lambda Expression : 함수형 프로그래밍을 지원하기에 람다 식을 이용할 수 있다.
  5. Expandability : 개발자가 직접 커스텀 메서드를 정의하여 LINQ 쿼리에서 사용할 수 있다.

주요 LINQ 연산자

  • Filetering : 조건에 맞는 데이터를 선택한다.
    1. Where : 특정 조건을 만족하는 요소를 선택한다.
        private void LINQWhere()
        {
            var bunch = new List<int> { 1, 2, 3, 4, 5 };
            var evenbunch = bunch.Where(n => n % 2 == 0).ToList(); //짝수로 필터링
            //출력 결과값은 2, 4
        }

  • Projection : 데이터를 변형하여 다른 형태로 정의한다.
    1.  Select : 각 요소를 변환하여 새로운 컬렉션으로 생성한다.
        private void LINQProjection()
        {
            var bunch = new List<int> { 1, 2, 3, 4, 5 };
            var squares = bunch.Select(x => x * x).ToList(); //제곱 연산으로 변형하여 Collection을 재생성
            //출력 결과값은 1, 4, 9, 16, 25
        }

  • Ordering : 데이터를 정렬한다.
    1. OrderBy : 지정된 키에 따라 오름차순으로 정렬한다.
    2. OrderByDescending : 지정된 키에 따라 내림차순으로 정렬한다.
        private void LINQOrderBy()
        {
            var bunch = new List<int> { 5, 3, 1, 4, 2 };
            var sortedbunch = bunch.OrderBy(x => x).ToList(); //오름차순으로 정렬
        }
        private void LINQOrderByDescending()
        {
            var bunch = new List<int> { 5, 3, 1, 4, 2 };
            var sortedbunch = bunch.OrderByDescending(x => x).ToList(); //내림차순으로 정렬
        }

  • Aggregation : 데이터를 요약한다.
    1. Count : Collection 내부 요소의 개수를 반환한다.
    2. Sum : Collection 내부 요소의 총합을 반환한다.
    3. Average : Collection 내부 요소의 평균을 반환한다.
        private void LINQCount()
        {
            var bunch = new List<int> { 1, 2, 3, 4, 5 };
            var count = bunch.Count(); //Collection 내부 요소의 개수 반환
        }
        private void LINQSum()
        {
            var bunch = new List<int> { 1, 2, 3, 4, 5 };
            var sum = bunch.Sum(); //Collection 내부 요소의 총합 반환
        }
        private void LINQAverage()
        {
            var bunch = new List<int> { 1, 2, 3, 4, 5 };
            var average = bunch.Average(); //Collection 내부 요소의 평균 반환
        }

  • Grouping : 데이터를 그룹으로 나눈다.
    1. GroupBy : 지정된 키에 따라 데이터를 그룹화한다.
        private void LINQGroup()
        {
            var bunch = new List<string> { "lamborghini", "ferrari", "mclaren", "aston martin", "bentley" };
            var groups = bunch.GroupBy(x => x[0]); //Collection 내부의 각 요소들의 첫 글자를 기준으로 그룹화
        }

  • Set Operations : 논리적인 집합 연산을 한다.
    1. Distinct : 중복된 값을 제거하고 유일한 값만 반환한다.
        private void LINQDistinct()
        {
            var bunch = new List<int> { 1, 1, 2, 2, 2, 2, 3, 4, 5, 5, 5};
            var distinct = bunch.Distinct().ToList(); //중복된 값을 제거하고 반환
        }

'IT개발 > C#' 카테고리의 다른 글

C#의 LINQ  (0) 2024.10.01