C# .net LINQ 이해하기

2973 단어 .NETC.NET

!한글 번역이 개발자 관점에서 진행되어져 있지 않은 탓에 원문 기준으로 번역한 내용을 공유드립니다

소개

쿼리 는 소스에서 데이터를 검색하는 식입니다.

LINQ는 다양한 데이터 소스에 사용할 수 있는 일관된 모델을 제공하여, 여러상황에서 필요한 상황을 단순화 합니다.

XML docs, SQL 데이터베이스, ADO.NET 데이터 세트등에 대해서 동일한 코딩 패턴을 사용합니다.

기본 쿼리작업의 세 부분

  1. 데이터 소스 가져오기
  2. 쿼리 만들기
  3. 쿼리 실행
class IntroToLINQ
{
    static void Main()
    {
        // The Three Parts of a LINQ Query:
        // 1. 데이터 소스 가져오기
        int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };

        // 2. 쿼리 만들기
        // numQuery is an IEnumerable<int>
        var numQuery =
            from num in numbers
            where (num % 2) == 0
            select num;

        // 3. 쿼리 실행
        foreach (int num in numQuery)
        {
            Console.Write("{0,1} ", num);
        }
    }
}

위는 코드로써 데이터를 쿼리작업하는 가정상황에 대한 설명을 하기 위한 내용이고, 아래와 같은 과정을 보입니다.

LINQ (Language Intergrated Query)

Linq는 쿼리 통합 능력이 들어간 c#기반의 기술 입니다. 전통적으로 쿼리에 대응하는 데이터는 단순 문자열로써, 타입에 대한 체크를 하는 컴파일 시간 혹은 지원을 하지않습니다.

이에 더해서, 각 데이터 소스마다, 다른 쿼리문을 익혀야 한다는 문제점이 있죠.

SQL, XML docs등등으로 다양하게 나뉘어 집니다. LINQ는 일급객체 언어 구조로, 클래스와 메소드 이벤트 등을 가집니다.

해당 언어에 대한 친숙한 연산자를 사용하여, 객체에 대한 쿼리를 작성하는 것이 가능합니다. 그리고 이것을 통해서 일관된 쿼리 환경을 제공해 줄 수 있습니다.

Query expressions

"언어 통합" 방식의 언어가 해당 쿼리를 작성할 때에 중요시 봐야할 부분입니다. 해당 Query expressions는 서술형방식의 쿼리 구문으로 작성됩니다.

해당 구문을 통해서, 필터링, 정렬, 그룹화 동작에 대해서, 최소한의 코드로서 작성하는 것이 가능하게 되죠.

해당 LINQ쿼리는 C#에서 지원하는 객체 컬랙션타입인 IEnumerable과 IEnumerable 인터페이스를 통해서 사용가능합니다.

class LINQQueryExpressions
{
    static void Main()
    {

        // Specify the data source.
        int[] scores = new int[] { 97, 92, 81, 60 };

        // Define the query expression.
        IEnumerable<int> scoreQuery =
            from score in scores
            where score > 80
            select score;

        // Execute the query.
        foreach (int i in scoreQuery)
        {
            Console.Write(i + " ");
        }
    }
}
// Output: 97 92 81
  

람다식이란? (복습)

람다식은 익명함수를 지칭하는 용어이며, 함수를 보다 간결히 표현해 놓은 식을 말합니다.

(매개변수, ...) -> {실행문}

(a, b) -> a + b;

LINQ의 사용예시

linq는 보통 람다식과 함께 기용된다.

!LINQ사용 방식 출처
https://docs.microsoft.com/ko-kr/dotnet/csharp/linq/

좋은 웹페이지 즐겨찾기