LINQ 표현식 분석
개요
LINQ 는 C# 언어 에 포함된 쿼리 구문입니다. .NET/ C# 운전자 는 LINQ 표현식의 하위 집합을 MongoDB 집계 파이프라인으로 변환할 수 있습니다.
LINQ에 대해 자세히 알아보려면 다음 리소스를 참조하세요.
집계 파이프라인에 대해 자세히 알아보려면 MongoDB 매뉴얼에서 애그리게이션 을 참조하세요.
참고
런타임 차이점
C# 분석기를 사용하여 LINQ 표현식에 대해 다음을 알아보세요.
LINQ 표현식이 MongoDB 쿼리 API 로 변환되는 방법
지원되지 않는 LINQ 표현식이 있는 경우
MongoDB 쿼리 API로 변환
다음 탭을 클릭하면 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 분석
Visual Studio에서 LINQ 표현식을 분석 하려면 다음 작업을 수행합니다.
설치 가이드에 설명된 대로 C# 분석기를 설치합니다.
.NET/C# 드라이버를 사용하여 LINQ 표현식을 작성합니다.
LINQ 표현식의 첫 번째 메서드 아래에 있는 ... 주석 위로 마우스를 가져가면 MongoDB Query API 변환이 포함된 정보 메시지가 표시됩니다.
간단한 LINQ 표현식
C# 분석기는 다음 구문 유형의 LINQ 표현식을 분석합니다.
메서드 구문
쿼리 구문
다음의 해당 탭을 클릭하면 정보 메시지의 유무에 관계없이 메서드 구문으로 작성된 LINQ 표현식을 볼 수 있습니다.
다음의 해당 탭을 클릭하면 정보 메시지의 표시 여부에 관계없이 쿼리 구문으로 작성된 LINQ 표현식을 볼 수 있습니다.
지원되지 않는 LINQ 표현식
LINQ 표현식이 지원되지 않는 경우 C# 분석기는 NotSupportedLinqExpression
경고를 출력합니다.
다음 탭을 클릭하면 지원되지 않는 LINQ 표현식이 포함된 코드 스니펫과 C# 분석기에서 표시하는 해당 경고 메시지를 볼 수 있습니다.
다음 코드 스니펫에는 지원되지 않는 GetHashCode
LINQ 표현식 이 포함되어 있습니다.
var result = queryableColl.Where(b => b.GetHashCode() == 167);
다음 스크린샷은 Visual Studio의 이전 코드 스니펫 아래에 C# 분석기가 표시하는 주석을 보여줍니다.
다음은 C# Analyzer 에서 생성되는 경고입니다.
Expression not supported: b.GetHashCode().
다음 스크린샷은 Visual Studio에 표시되는 경고를 보여줍니다.
팁
오류 목록 패널
Windows용 Visual Studio를 사용하는 경우 오류 목록 창의 {+product+-short} 출력을 볼 수 있습니다.
자세히 알아보려면 오류 목록 창 을 참조하세요. Microsoft에서 제공합니다.
지원되지 않는 LINQ 표현식의 더 많은 예제를 보려면 MongoDB C# 분석기 Github 리포지토리를 참조하세요.
Analyze LINQ3
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 리포지토리 를 참조하세요.