LINQ

Coding Cat·2024년 7월 16일

C#

목록 보기
8/11

LINQ(Language Integrated Query)

C#과 같은 .NET 언어에서 데이터 소스와 상호 작용하는 간편한 방법을 제공하는 통합 쿼리 기능이다.

LINQ는 쿼리를 데이터 소스에 통합하여 객체 지향 프로그래밍과 관계형 데이터베이스 쿼리 간의 격차를 줄여준다.

데이터베이스, 컬렉션, XML 등 다양한 데이터 소스에서 데이터를 쿼리할 수 있으며, 다양한 연산자를 사용하여 쿼리 결과를 필터링, 정렬, 그룹화 등 다양하게 처리할 수 있다.

LINQ의 주요 개념

1.LINQ to Objects: 메모리에 있는 컬렉션(예: 배열, 리스트 등)을 쿼리할 때 사용된다.
2.LINQ to SQL: 관계형 데이터베이스(SQL Server 등)를 쿼리할 때 사용된다.
3.LINQ to XML: XML 데이터를 쿼리할 때 사용된다.
4.LINQ to Entities: Entity Framework를 사용하여 데이터베이스를 쿼리할 때 사용된다.

LINQ 쿼리의 동작 방식

1.데이터 소스: 쿼리할 데이터가 저장된 데이터 소스를 지정한다. 예를 들어, 배열, 리스트, 컬렉션, 데이터베이스 테이블, Json Object 등을 데이터 소스로 사용할 수 있다.

2.쿼리 만들기: LINQ에서 쿼리는 일반적으로 '확장 메서드'와 '쿼리 식'으로 만든다. 쿼리 식은 SQL 쿼리와 유사한 구문을 사용하여 쉽게 작성할 수 있다. 예를 들어, SELECT, FROM, WHERE, ORDER BY 등과 같은 구문이 사용된다.

3.결과 처리: LINQ 쿼리를 실행하여 결과를 가져온다. C#에서는 쿼리를 실행할 때 LINQ to Objects, LINQ to XML, LINQ to SQL 등 다양한 방식으로 실행할 수 있다.

LINQ 구문

  • 쿼리 구문(Query Syntax): SQL과 유사한 구문으로 작성된다.
  • 메서드 구문(Method Syntax): 메서드 호출을 통해 작성됩니다. 이는 메서드 체이닝이라고도 한다.
using System;
using System.Collections.Generic;
using System.Linq;

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

        // 쿼리 구문을 사용한 LINQ 쿼리
        var evenNumbers = from n in numbers
                          where n % 2 == 0
                          select n;

        foreach (var num in evenNumbers)
        {
            Console.WriteLine(num);  // 출력: 2, 4, 6, 8, 10
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;

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

        // 메서드 구문을 사용한 LINQ 쿼리
        var evenNumbers = numbers.Where(n => n % 2 == 0);

        foreach (var num in evenNumbers)
        {
            Console.WriteLine(num);  // 출력: 2, 4, 6, 8, 10
        }
    }
}

LINQ 쿼리에서 자주 사용되는 예약어

  • from: 데이터 소스에서 가져올 요소를 지정한다.
  • where: 데이터를 필터링한다.
  • orderby: 데이터를 정렬한다. - de, as
  • select: 데이터를 반환한다.
  • group by: 데이터를 그룹화한다.
  • join: 두 개의 데이터 소스를 결합한다.
  • let: 임시 변수를 만들어 쿼리 내에서 사용한다.

LINQ 표준 연산자

profile
나의 archive

0개의 댓글