Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# LINQ Select 메서드로 배열 요소 변환하기

C# LINQ Select 메서드란?

C#의 Select 메서드는 배열이나 컬렉션에 담긴 각 요소를 원하는 형태로 변환(투영)할 때 사용하는 대표적인 LINQ 연산자입니다. 원본 데이터는 그대로 유지하면서, 각 요소에 원하는 가공을 적용한 새로운 시퀀스를 생성해 줍니다.

예제에 사용할 문자열 배열

다음과 같이 문구류 이름을 담은 문자열 배열이 있다고 가정해 보겠습니다.

string[] stationery = { "diary", "board", "pencil", "whiteboard" };

람다 식을 활용한 Select 메서드 예제

Select 메서드는 아래 코드처럼 람다 식(Lambda Expression)을 인자로 받아 사용하며, 요소 값뿐 아니라 해당 요소의 인덱스도 함께 전달받을 수 있습니다. 이 예제에서는 요소(item)와 인덱스(index)를 이용해 Substring으로 문자열 일부를 잘라낸 새 익명 객체를 생성합니다.

예제 코드

using System;
using System.Linq;
using System.Collections.Generic;

public class Demo {
    public static void Main() {
        string[] stationery = { "diary", "board", "pencil", "whiteboard" };
        var res = stationery.AsQueryable().Select((item, index) => new { result = item.Substring(0, index + 4) });
        foreach (var str in res) {
            Console.WriteLine("{0}", str);
        }
   }
}

실행 결과

{ result = diar }
{ result = board }
{ result = pencil }
{ result = whitebo }

코드 동작 방식

(item, index) 형태의 람다 식을 사용하면 각 요소와 함께 해당 요소의 인덱스도 전달받을 수 있습니다. 인덱스는 0부터 시작하므로 index + 4개만큼의 문자를 잘라내며, 결과는 다음과 같습니다.

  • "diary"(인덱스 0) → 앞에서 4글자 → "diar"
  • "board"(인덱스 1) → 앞에서 5글자 → "board"
  • "pencil"(인덱스 2) → 앞에서 6글자 → "pencil"
  • "whiteboard"(인덱스 3) → 앞에서 7글자 → "whitebo"

이처럼 Select 메서드를 활용하면 별도의 반복문 없이도 컬렉션의 모든 요소를 간결하고 직관적으로 변환할 수 있습니다.