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# 추상 클래스란?  (1) 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# 프로퍼티
코샵
코샵
나의 코딩 일기장
    반응형
  • 코샵
    끄적끄적 코딩 공방
    코샵
    • 분류 전체보기 (730)
      • 스마트팜 (1)
      • 상품 추천 (223)
      • DataBase (0)
        • MongoDB (4)
        • PostgreSQL (0)
      • 하드웨어 (19)
      • 일기장 (4)
      • 파이썬 (131)
        • Basic (42)
        • OpenCV (8)
        • Pandas (15)
        • PyQT (3)
        • SBC(Single Board Computer) (1)
        • 크롤링 (14)
        • Fast API (29)
        • Package (6)
      • Unity (138)
        • Tip (41)
        • Project (1)
        • Design Pattern (8)
        • Firebase (6)
        • Asset (2)
      • Linux (5)
      • C# (97)
        • Algorithm (11)
        • Window (7)
      • TypeScript (51)
        • 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)
  • 인기 글

  • 태그

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

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

티스토리툴바