Docs Menu
Docs Home
/
MongoDB C# 분석기
/

LINQ 표현식 분석

이 페이지의 내용

  • 개요
  • MongoDB 쿼리 API로 변환
  • Visual Studio에서 LINQ 분석
  • 간단한 LINQ 표현식
  • 지원되지 않는 LINQ 표현식
  • Analyze LINQ3

LINQ 는 C# 언어 에 포함된 쿼리 구문입니다. .NET/ C# 운전자 는 LINQ 표현식의 하위 집합을 MongoDB 집계 파이프라인으로 변환할 수 있습니다.

LINQ에 대해 자세히 알아보려면 다음 리소스를 참조하세요.

  • .NET/ C# 운전자 설명서의 LINQ

  • Microsoft C# 가이드 의LINQ

집계 파이프라인에 대해 자세히 알아보려면 MongoDB 매뉴얼에서 애그리게이션 을 참조하세요.

참고

런타임 차이점

C# 분석기에서 생성된 MongoDB 쿼리 API 변환은 런타임 .NET/C# 드라이버 쿼리와 쿼리 형태 가 동일하지만, 다음과 같은 요인으로 인해 약간의 차이가 있을 수 있습니다.

  • 직렬화 설정

  • LINQ 설정

C# 분석기가 생성하는 번역과 런타임 시 쿼리 간의 차이가 코드 분석 및 디버깅 기능에 영향을 주지 않아야 합니다.

직렬화 및 LINQ 설정에 학습 보려면 FAQ 페이지를 참조하세요.

C# 분석기를 사용하여 LINQ 표현식에 대해 다음을 알아보세요.

  • LINQ 표현식이 MongoDB 쿼리 API 로 변환되는 방법

  • 지원되지 않는 LINQ 표현식이 있는 경우

다음 탭을 클릭하면 LINQ 표현식과 해당 MongoDB 쿼리 API 번역의 예를 볼 수 있습니다.

var books = queryableCollection
.Where(b =>
b.Genre == genre &&
b.Price >= minPrice &&
b.Title.Contains(titleSearchTerm))
.OrderBy(b => b.Price)
.ToList();
[{ "$match" : {
"Genre" : genre,
"Price" : { "$gte" : minPrice },
"Title" : /titleSearchTerm/s }
},
{ "$sort" : { "Price" : 1 } }]

참고

변수 이름

C# 분석기에서 생성된 MongoDB 쿼리 API 번역에는 .NET/C# 드라이버 코드의 변수 이름이 포함되어 있습니다. .NET/C# 드라이버는 애플리케이션이 MongoDB와 통신할 때 이러한 변수 이름을 해당 값으로 바꿉니다.

Visual Studio에서 LINQ 표현식을 분석 하려면 다음 작업을 수행합니다.

  1. 설치 가이드에 설명된 대로 C# 분석기를 설치합니다.

  2. .NET/C# 드라이버를 사용하여 LINQ 표현식을 작성합니다.

  3. LINQ 표현식의 첫 번째 메서드 아래에 있는 ... 주석 위로 마우스를 가져가면 MongoDB Query API 변환이 포함된 정보 메시지가 표시됩니다.

C# 분석기는 다음 구문 유형의 LINQ 표현식을 분석합니다.

  • 메서드 구문

  • 쿼리 구문

다음의 해당 탭을 클릭하면 정보 메시지의 유무에 관계없이 메서드 구문으로 작성된 LINQ 표현식을 볼 수 있습니다.

Visual Studio에서 줄임표 주석이 있는 LINQ 표현식 의 스크린샷입니다.
Visual Studio에 정보 메시지가 표시되는 LINQ 표현식 의 스크린샷입니다.

다음의 해당 탭을 클릭하면 정보 메시지의 표시 여부에 관계없이 쿼리 구문으로 작성된 LINQ 표현식을 볼 수 있습니다.

Visual Studio에서 줄임표 주석이 있는 LINQ 표현식 의 스크린샷입니다.
Visual Studio에 정보 메시지가 표시되는 LINQ 표현식 의 스크린샷입니다.

LINQ 표현식이 지원되지 않는 경우 C# 분석기는 NotSupportedLinqExpression 경고를 출력합니다.

다음 탭을 클릭하면 지원되지 않는 LINQ 표현식이 포함된 코드 스니펫과 C# 분석기에서 표시하는 해당 경고 메시지를 볼 수 있습니다.

다음 코드 스니펫에는 지원되지 않는 GetHashCode LINQ 표현식 이 포함되어 있습니다.

var result = queryableColl.Where(b => b.GetHashCode() == 167);

다음 스크린샷은 Visual Studio의 이전 코드 스니펫 아래에 C# 분석기가 표시하는 주석을 보여줍니다.

지원되지 않는 LINQ 표현식 아래의 주석 스크린샷

다음은 C# Analyzer 에서 생성되는 경고입니다.

Expression not supported: b.GetHashCode().

다음 스크린샷은 Visual Studio에 표시되는 경고를 보여줍니다.

지원되지 않는 LINQ에서 Visual Studio에 표시되는 경고 스크린샷입니다.

오류 목록 패널

Windows용 Visual Studio를 사용하는 경우 오류 목록 창의 {+product+-short} 출력을 볼 수 있습니다.

자세히 알아보려면 오류 목록 창 을 참조하세요. Microsoft에서 제공합니다.

지원되지 않는 LINQ 표현식의 더 많은 예제를 보려면 MongoDB C# 분석기 Github 리포지토리를 참조하세요.

LINQ3 표현식을 분석하려면 LINQ3 공급자를 사용하도록 C# 분석기를 구성해야 합니다. LINQ 제공자를 구성하는 방법을 알아보려면 구성 가이드를 참조하세요.

중요

LINQ3에서만 지원되는 표현식

.NET/C# 드라이버 버전이 LINQ3 를 지원하지만 기본 LINQ 제공자(LINQ2)를 사용하도록 C# 분석기를 구성한 경우, C# 분석기는 LINQ 표현식이 LINQ3 에서 지원되는지 여부를 알려줍니다. LINQ2.

탭을 클릭하면 LINQ3 에서는 지원되지만 LINQ2 에서는 지원되지 않는 LINQ 표현식과 C# 분석기의 해당 경고 출력을 볼 수 있습니다.

var result = queryableColl.Where(b => b.Title.Substring(0) == "Pane");
Supported in LINQ3 only: db.coll.Aggregate([{ "$match" : { "$expr" : { "$eq" : [{ "$substrCP" : ["$Title", 0, { "$subtract" : [{ "$strLenCP" : "$Title" }, 0] }] }, "Pane"] } } }])

.NET/C# 운전자 가 LINQ3 제공자 에서만 지원하는 표현식의 예를 보려면 MongoDB C# Analyzer Github 리포지토리 를 참조하세요.

돌아가기

빌더 표현식