비디오: C# Tutorial 15 LINQ Tutorial 2024
By John Paul Mueller
Language INtegrated Query (LINQ)는 다음과 같은 기능입니다. 마이크로 소프트를 넘어서서 당신의 이해를 넓혀주는 NET Framework. LINQ를 사용하여 필수 연산자와 몇 가지 추가 쿼리 연산자를 알면 무엇이든 쿼리 할 수 있습니다. 길을 잃은 경우 Microsoft는 네트워크, 블로그 및 포럼을 통해 풍부한 리소스를 제공합니다.
필수 LINQ 연산자
언어 INTEgrated Query (LINQ)는 놀라운 연산자 배열을 사용합니다. 연산자 는 두 값이 같은지 여부를 확인하는 것과 같이 수행 할 쿼리의 종류를 LINQ에 알려주는 특수한 단어입니다. 운영자는 수백 명에 달할 수 있지만 대부분의 경우 소수의 표준 운영자 만 사용하여 대부분의 작업을 수행합니다. 다음은 필수 LINQ 연산자 목록입니다.
연산자 | 설명 |
---|---|
from | 쿼리를 수행하는 데 사용되는 임시 개체를 정의합니다.
이 연산자를 사용하여 쿼리의 다른 모든 데이터를 파생시킨 개별 요소 객체를 정의하는 것으로 생각하십시오. 예를 들어 임시 변수를 기반으로 출력에 표시 할 데이터와 해당 데이터의 순서를 결정합니다 를 선택합니다. 연산자에서 생성 된 모든 쿼리에 반드시 표시되어야하는 유일한 연산자입니다. in |
데이터를 가져 오는 데 사용 된 데이터 소스를 정의합니다. 데이터 소스 | 는 데이터 공급자가 지원하는 모든 객체가 될 수 있습니다. 공급자
는 데이터 소스와 LINQ 쿼리 간의 연결을 만듭니다. 예를 들어, 데이터 소스에는 목록 상자, XML 파일, SQL Server 테이블, Active Directory, 웹 서비스 또는 사용할 정보가 포함될 수 있습니다 정보를 수집합니다. LINQ 쿼리를 사용하여 하드 드라이브의 파일로 직접 작업하는 것도 가능합니다. 쿼리는 쿼리에서 사용 된 데이터 소스를 완전히 설명하는 데 필요한만큼의 from 연산자와 from 연산자로 일치하는 쌍을 포함 할 수 있습니다. select |
쿼리에 대한 출력 정보를 선택합니다. 가장 간단한 | 출력은 from 연산자를 사용하여 정의한 것과 동일한 객체입니다. 그러나 select 연산자에는 계산 된 값, 데이터 배열 또는 개별 객체 속성이 포함될 수 있습니다. 대부분의 경우
제한 요소는 LINQ 공급자가 제공하는 기능입니다. 네 가지 기본 공급자에는 전체 선택 연산자 동작 범위가 포함됩니다. 쿼리에는 단 하나의 선택 연산자 만 포함되며이 연산자는 쿼리의 마지막 연산자로 나타나야합니다. 여기서 요소가 출력의 일부로 나타나는 조건을 설명합니다.where 연산자는 항상 출력 조건을 정의하기 위해 Boolean 인수가 필요합니다. |
는 출력 기준을 완전히 설명하는 데 필요한만큼 | 연산자를 포함 할 수 있습니다. LINQ는
연산자가 쿼리에 나타나는 순서대로 연산자를 해석하므로 순서가 중요합니다. 쿼리 가 예상대로 작동하지 않는 경우 출력 연산자 요구 사항을 더 잘 설명하도록 연산자의 순서를 변경하십시오. 디버거를 사용하여 연산자의 논리 흐름에서 오류를 찾을 수 있습니다. orderby 출력 요소가 나타나는 순서를 정의합니다. 가장 간단한 orderby 연산자는 from 연산자를 사용하여 정의한 객체에 의존합니다. 그러나 orderby 연산자 |
는 논리 순서 인수 | 를 입력으로 정의하는 명령문 (일반적으로 숫자, 알파벳순, 기호 또는 이진수)을 허용 할 수 있습니다.
데이터의 출력 순서를 완전히 설명하는 데 필요한 만큼 많은 orderby 연산자를 사용할 수 있습니다. where 연산자와 마찬가지로 LINQ는 orderby 연산자를 쿼리에 나타나는 순서대로 해석합니다. 결과적으로 orderby 연산자의 순서가 중요합니다. 조인 및 둘 이상의 데이터 소스를 결합하여 데이터의 복합보기를 작성합니다. 데이터 소스는 동일한 제공 업체에 의존 할 필요가 없습니다. 는 쿼리에 사용 된 모든 데이터 소스를 완전히 설명하는 데 필요한 만큼의 조인 연산자를 사용할 수 있습니다. on 연산자는 두 개의 데이터 소스를 결합하는 데 사용되는 기준을 정의합니다. 조인을 페어화한 연산자 |
를 사용하여 완전한 데이터 소스를 만듭니다. | let
쿼리 내에서 사용할 계산 된 값을 만듭니다. 계산 된 값은 복잡한 쿼리를 공식화하기 쉽습니다. 또한 발신자에게 계산 된 값을 전달하여 추가 출력 정보를 제공 할 수 있습니다. 대부분의 경우 let 연산자는 LINQ가 명명 충돌로 인해 일반적으로 전달하지 않는 데이터를 전달하는 수단을 제공합니다. 는 필요한만큼 많은 연산자를 사용하여 전체 쿼리 기능을 제공 할 수 있지만 계산 된 값이 쿼리 속도를 향상시키는 경우에는 사용을 제한해야합니다. |
표준 쿼리 연산자를 사용하면 LINQ (Language INTEgrated Query)를 사용하는 것이 훨씬 쉬워집니다. 여러 가지면에서 이미 간단한 쿼리 연산자로 작업했을 것입니다. 예를 들어 orderby 키워드를 사용하면 표준 쿼리 연산자의 정렬 그룹에서 쿼리 연산자를 사용하게됩니다. where 키워드를 사용하면 다른 쿼리 연산자를 사용하지만 이번에는 필터링 그룹에 포함됩니다.
다음은 표준 쿼리 운영자 그룹의 목록과 추가 정보를 찾을 수있는 위치입니다. 그룹 설명 그룹 설명 포함 연산자 추가 정보 집계 연산 집계 연산자는 모두 데이터 소스로 수학적 작업을 수행하는 것을 도와줍니다. |
연결 연산
단일 연결 연산자로 두 개의
시퀀스를 결합 할 수 있습니다.집계, 평균, 개수, LongCount, Max, Min 및 Sum
Concat | Microsoft | 개발자 네트워크: 연결 작업 | 데이터 형식 변환 |
---|---|---|---|
데이터 형식 변환은 지연 및 | nondeferred의 두 가지 형식으로 제공됩니다. 지연 변환 연산자는 결과의
집합을 해석 할 때 쿼리의 결과 |
를 특정 유형으로 변환합니다. 불이행 변환 연산자는 | 쿼리의 출력을 특정 유형으로 변경합니다.
AsEnumerable, AsQueryable, Cast, |
OfType, ToArray, ToDictionary, ToList, | 및 ToLookup
Microsoft |
개발자 네트워크: 데이터 형식 변환 | 요소 연산
요소와 같은 식별 정보 |
를 모르는 경우에도 | 시퀀스의 특정 요소를 선택합니다.
ElementAt, ElementAtOrDefault, First, FirstOrDefault, Last, LastOrDefault, Single 및 SingleOrDefault Microsoft 개발자 네트워크: 요소 작업 동일 작업 |
단독 평등 연산자를 사용하면 두 개의
시퀀스는 동일하다 (요소의 수와 각 요소의 내용은 동일하다). |
SequenceEqual
Microsoft |
개발자 네트워크: Equality Operations | 데이터 필터링
필터링 연산자를 사용하면 특정 기준에 따라 시퀀스의 요소를 제외하거나 포함 할 수 있습니다. OfType 및 Where |
Microsoft
개발자 네트워크: 데이터 필터링 |
생성 작업
생성 연산자는 지정한 |
기준에 따라 새 시퀀스를 만듭니다. | DefaultIfEmpty, Empty, Range 및
반복 Microsoft |
개발자 네트워크: 생성 작업 | 데이터 그룹화
그룹화 연산자를 사용하면 특정 |
특성 | 문자열 그룹의 첫 번째 문자로 사용됩니다.
GroupBy 및 ToLookup |
Microsoft | 개발자 네트워크: 데이터 그룹화
조인 작업 |
조인 연산자는 두 개 이상의 시퀀스를 입력으로 받아들이고 | 는 특정 조인을 기반으로 한 단일 출력 시퀀스를 만듭니다 조인 기준을 입력하고
. |
Join and GroupJoin
Microsoft |
개발자 네트워크: Join 조작
데이터 파티셔닝 |
파티셔닝 연산자는 시퀀스를 구분하여 | 특정 정보를 찾는 데 도움을줍니다.
Microsoft는 개발자 네트워크: 데이터 파티셔닝 |
프로젝션 작업 | 프로젝션 연산자는 사용자가 만든 쿼리
를 기반으로 새로운 형식을 만듭니다. |
Select and SelectMany | Microsoft
개발자 네트워크: 투영 연산 수량 한정자 연산 |
수량 한정 연산자를 사용하면 | 특정 기준에 따라 요소를 선택할 수 있습니다. 이 연산자를 사용하여
없음, 하나 또는 둘 이상의 요소가 선택한 |
기준을 충족하는지 확인합니다. | 모두, 모두,
포함 |
Microsoft
개발자 네트워크: 수량 자 작업 |
집합 연산
집합 연산자는 집합을 만듭니다. 학교에서 수행 한 산수 계산법을 생각해보십시오. |
Distinct, Except, Intersect, Union | Microsoft
개발자 네트워크: Set Operations |
데이터 정렬 | 정렬 연산자는 시퀀스를 특정
순서로 배치하는 데 도움이됩니다. |
OrderBy, OrderByDescending, ThenBy, ThenByDescending 및 Reverse | Microsoft
개발자 네트워크: 데이터 정렬 Microsoft LINQ 리소스 추가 정보와 도구 및 개선 사항을 얻을 수있는 곳을 아는 것이 유용합니다 언어 통합 쿼리 (LINQ) 응용 프로그램을 만들 때. 다음은 LINQ에 유용한 Microsoft 리소스 목록입니다. |
Microsoft 개발자 네트워크
Microsoft 개발자 네트워크 (MSDN)는 항상 모든 Microsoft 개발 제품의 기본 자료를 제공합니다. 어느 한 사람이 평생 읽는 것보다 더 많은 정보를 얻을 수 있습니다. 따라서 신중하게 정보를 이동해야하거나 MSDN 미로에서 길을 잃을 수 있습니다. LINQ를 사용하기위한 주요 MSDN 사이트는 뉴스, 리소스 및 샘플과 같은 다른 정보에 대한 액세스를 제공합니다. |
Microsoft 블로그
Microsoft는 LINQ 사용 방법을 알고 자합니다. 과거에는 MSDN에서 필요한 많은 정보를 찾을 수있었습니다. MSDN 웹 사이트는 여전히 좋은 곳이지만 많은 Microsoft 개발자는 너무 정식이라고 (일부 경우에는 기사를 이해하기가 매우 어렵다는) 불평하고 저자와 상호 작용할 수있는 기회가 없었습니다. Microsoft 블로그는 저자와 실제로 의견을 나눌 수있는 정보를 얻을 수있는 친숙한 환경을 제공합니다. |
Beth Massi: Visual Basic (VB)의 장점 공유하기 | Charlie Calvert의 커뮤니티 블로그
Wriju의 블로그: |
LINQ와 함께 작업 할 때 방문하고 싶은 몇 가지 블로그가 있습니다. NET 및 Everything
이 블로그의 대부분은 일반적입니다. 모든 프로그래밍 문제를 논의합니다. 따라서 각 블로그에서 다양한 주제를 찾을 수 있습니다. 저자는 하나의 게시물에서 파일 시스템을 논의하고 다른 게시물에서는 LINQ에 대해 토론 할 수 있습니다. 각각 블로그의 검색 기능을 사용하여 검색 할 수있는 LINQ 관련 항목이 있습니다. Charlie Calvert가 Microsoft를 떠났지만 그의 블로그에는 풍부한 LINQ 정보가 포함되어 있습니다. |
Microsoft 포럼
블로그를 통해 Microsoft와 충분한 상호 작용을하고 있다고 생각하지 않으면 Microsoft 직원은 종종 Microsoft 포럼을 자주 방문합니다. 올바른 포럼에 메시지를 올리면 전문적인 도움이나 다른 포럼 회원의 지식이있는 도움을받을 수 있습니다. 대부분의 개발자는 MSDN 포럼을 통해 LINQ에 대한 기본적인 질문을받습니다. Microsoft 커뮤니티에서 일반적인 포럼 목록을 볼 수 있습니다. Visual Basic에 대한 언어 별 포럼을 사용하는 것을 잊지 마십시오. 그물. |