[C#] LINQ, StringBuilder

장민제·2025년 4월 15일

C# Study

목록 보기
11/11
post-thumbnail

✅ LINQ (Language Integrated Query) ?

  • .NET Framework 에서 제공되는 쿼리 언어 확장
  • 컬렉션 데이터를 SQL 처럼 쉽게 조회, 필터링, 정렬, 그룹화를 할 수 있게 해준다.
  • 반복문 없이도 리스트를 쉽게 다룰 수 있게 해준다.

◾ LINQ 기본 예제

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

List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6 };

// 짝수만 필터링 (메서드 구문)
var evenNumbers = numbers.Where(n => n % 2 == 0);

// 홀수만 필터링 (쿼리 구문)
var oddNumbers = from n in numbers
				 where n % 2 == 1
                 select n;
// 출력
foreach (var num in evenNumbers)
{
    Console.WriteLine(num);
}

foreach (var num in oddNumbers)
{
	Console.WriteLine(num);
}

◾ 자주 사용하는 LINQ 메서드

메서드설명
Where()조건에 맞는 요소 필터링
Select()각 요소를 변환 (매핑)
OrderBy()오름차순 정렬
OrderByDescending()내림차순 정렬
GroupBy()조건에 따라 그룹화
Any()조건을 만족하는 요소가 하나라도 있는지 확인
All()모든 요소가 조건을 만족하는지 확인
First()첫 번째 요소 반환 (없으면 예외 발생)
FirstOrDefault()첫 번째 요소 반환 (없으면 기본값 반환)
Count()조건에 맞는 요소 개수 반환
Sum()합계 계산
Average()평균 계산
Max()최대값 반환
Min()최소값 반환

◾ 리스트에서 짝수만 찾아 오름차순으로 정렬하는 예제

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

class Program
{
    static void Main()
    {
        List<int> numbers = new List<int> { 5, 12, 3, 8, 1, 4, 10, 9, 6 };

        // 짝수 필터링 후 오름차순 정렬
        var evenSorted = numbers
            .Where(n => n % 2 == 0)
            .OrderBy(n => n);

        foreach (var num in evenSorted)
        {
            Console.Write($"{num} ");
        }
    }
}

>>> 4 6 8 10 12

잘만 사용한다면 컬렉션 데이터에서 간편하게 원하는 데이터를 가져올 수 있다.


✅ StringBuilder ?

  • 문자열을 효율적으로 조작할 수 있도록 도와주는 클래스
  • string은 불변 객체이기 때문에 문자열을 반복해서 더하거나 수정하면 새로운 문자열 인스턴스가 생성되어 성능 저하가 발생하게된다.
    -> StringBuilder는 가변 객체로, 문자열을 계속 수정해도 하나의 인스턴스에서 작업이 이루어진다.

◾ 자주 사용하는 StringBulder 메서드

메서드설명
Append(string)문자열을 끝에 추가함
AppendLine()줄바꿈과 함께 문자열을 끝에 추가함
Insert(index, str)지정한 위치에 문자열 삽입
Remove(index, len)지정한 위치부터 지정 길이만큼 문자열 삭제
Replace(old, new)특정 문자열을 다른 문자열로 교체
Clear()모든 문자열을 제거하여 초기화
ToString()StringBuilder에 저장된 문자열을 string으로 반환

◾ 사용 예시

using System;
using System.Text;

class Program
{
    static void Main()
    {
        StringBuilder sb = new StringBuilder();

        sb.Append("Hello");			// 문자열 끝에 "Hello" 추가
        sb.AppendLine(" World!");	// 문자열 끝에 "World!\n" 추가
        sb.Insert(0, "Say: ");		// 인덱스 0번째 위치에 "Say: " 추가 
        sb.Replace("World", "C#");	// "World"와 "C#" 문자열 교체

        Console.WriteLine(sb.ToString());
    }
}
>>> Say: Hello C#!
>>> Hi

StringBuilder를 사용하면 문자열의 조작을 쉽게 할 수 있다. (성능적으로도 좋음)


profile
Unity, C#

0개의 댓글