C# : LINQ

2023. 4. 18. 13:10·C#
반응형

LINQ란?

LINQ(Language-INtegrated Query)의 약자인 LINQ는 C#에서 데이터 질의(Query) 기능을 사용할 수 있는 기술입니다. C#의 배열, 컬렉션, XML, DataSet 등에서 내가 원하는 데이터만 가져오고 싶은 경우 사용할 수 있는 기술입니다.

LINQ의 장단점을 알아보기 전에 LINQ가 무엇인지 다음 예제를 통해 간략하게 알아봅시다. 다음 예제는 배열에서 대문자 "A"로 시작하고 문자열의 길이가 3보다 큰 문자열을 LINQ로 추출한 뒤 콘솔에 출력합니다.

class Program
{
  static void Main(string[] args)
  {
    string[] fruits = { "apple", "banana", "cherry", "date", "elderberry", "fig" };

    var result = fruits.Where(fruit => fruit.StartsWith("a") && fruit.Length > 3);

    foreach (var fruit in result)
      Console.Write(fruit + " ");
  }
}

[Output]

apple

반복문과 조건문 없이 LINQ에서 사용할 수 있는 문법을 사용하여 원하는 문자열을 추출하였습니다.

LINQ는 C# 및 VB.net에서만 사용할 수 있습니다.


LINQ의 주요 기능

  • LINQ to objects - 배열, 컬렉션, 제네릭 컬렉션에서 LINQ를 사용하여 원하는 데이터를 추출할 수 있습니다.
  • LINQ to XML - XML 문서에서 LINQ를 사용하여 원하는 데이터를 추출할 수 있습니다.
  • LINQ to SQL - SQL 서버의 데이터베이스와 함께 동작할 수 있습니다.
  • LINQ to DataSet - DataSet에 LINQ를 사용하여 원하는 데이터를 추출할 수 있습니다.

LINQ의 장점

  • SQL과 유사하므로 SQL 사용이 익숙하다면, 쉽게 접근할 수 있습니다.
  • LINQ는 컴파일 시간에 타입을 체크합니다. 따라서, 프로그램 실행 전에 문제가 되는 코드를 수정할 수 있습니다.
  • 반복문, 조건문을 사용하는 것보다 코드가 단순해집니다.
  • LINQ의 질의는 재사용할 수 있습니다.

LINQ의 단점

  • RDBMS를 사용해보지 않은 개발자에게는 어려울 수 있습니다.
  • SQL과 유사하지만, 복잡한 질의(Query)는 작성할 수 없습니다.
  • 질의가 잘못된 경우 for, foreach와 같은 반복문을 사용하는 것보다 성능이 저하될 수 있습니다.

LINQ 기본 구조

LINQ의 질의 구문은 from 키워드로 시작하여 select 키워드로 끝납니다.

다음 소스 코드를 from 절부터 select 절까지 설명하겠습니다.

string[] words = { "Apple", "Astronomy", "Algorithm", "Anatomy" };

var result = from word in words
             where word.StartsWith("A") && word.Length > 5
             select word;

위 예제는 배열 words에서 첫 문자가 "A"로 시작하고 길이가 5보다 큰 문자열을 추출하는 LINQ 쿼리입니다.

string[] strArr = { "Hello", "World", "C#", "Programming" };

var result = from str in strArr
             where str.StartsWith("H") && str.Length > 5
             select str;

위 예제는 배열 strArr에서 첫 문자가 "H"로 시작하고 길이가 5보다 큰 문자열을 추출하는 LINQ 쿼리입니다.

select 절에는 추출하고 싶은 항목을 작성합니다. 객체인 경우 특정 프로퍼티를 명시할 수 있습니다.

 

다음 예제는 Person 클래스 객체로 구성된 List에서 name 프로퍼티만 추출합니다.

class Person
{
  public string name;
  public int age;
}

class Program
{
  static void Main(string[] args)
  {
    List<Person> people = new List<Person>
    {
      new Person() { name = "Alice", age = 25},
      new Person() { name = "Bob", age = 20},
      new Person() { name = "Charlie", age = 31},
    };

    var result = from person in people
                 where person.age > 25
                 select person.name;

    foreach (var name in result)
      Console.Write(name + " ");
  }
}

[Output]

Charlie

위 예제처럼 where 절에는 특정 프로퍼티에 대해 조건을 작성할 수 있으며, select 절에는 원하는 항목만 추출할 수 있습니다.

저작자표시 비영리 변경금지 (새창열림)

'C#' 카테고리의 다른 글

C# : Refactoring  (0) 2023.04.20
C# 추상 클래스란?  (0) 2023.04.19
Collection was modified: enumeration operation may not execute  (2) 2023.04.16
C# 프로퍼티  (0) 2023.04.16
C# 반복문 : while  (0) 2023.04.15
'C#' 카테고리의 다른 글
  • C# : Refactoring
  • C# 추상 클래스란?
  • Collection was modified: enumeration operation may not execute
  • C# 프로퍼티
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (644) N
      • 상품 추천 (150) N
      • MongoDB (4)
      • 하드웨어 (11) N
      • 일기장 (4)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • 파이썬 (12)
        • Basic (41)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Linux (4)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (50)
        • CSS (10)
      • Git (11)
      • SQL (5)
      • Flutter (10)
        • Tip (1)
      • System (1)
      • BaekJoon (6)
      • Portfolio (2)
      • MacOS (1)
      • 유틸리티 (1)
      • 서비스 (6)
      • 자동화 (3)
      • Hobby (10)
        • 물생활 (10)
        • 식집사 (0)
  • 인기 글

  • 태그

    쇼핑몰리뷰
    리뷰이관
    스마트스토어리뷰
    리뷰관리
    ipcamera
    유니티
    리스트
    appdevelopment
    programming101
    codingcommunity
    programmerlife
    cv2
    devlife
    list
    Python
    스크립트 실행 순서
    카페24리뷰
    rtsp
    codingtips
    C#
    긴유통기한우유
    셀레니움
    카페24리뷰이관
    상품 리뷰 크롤링
    라떼우유
    스크립트 실행
    믈레코비타멸균우유
    learntocode
    파이썬
    unity
  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코샵
C# : LINQ
상단으로

티스토리툴바