Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/
C# Analyzer
/

LINQ 式の分析

LINQは、C# 言語に含まれるクエリ構文です。 .NET/C# ドライバーは、LINQ 式のサブセットを MongoDB 集計パイプラインに変換できます。

LINQ の詳細については、次のリソースを参照してください。

  • .NET/C# ドライバーのドキュメントのLINQ

  • Microsoft C#ガイドの LINQ

集計パイプラインの詳細については、MongoDB マニュアルの集計を参照してください。

注意

ランタイムの差

C# Analyzer によって生成される MongoDB Query API の翻訳は、ランタイム.NET/C# ドライバー クエリと同じクエリシェイプを持ちますが、次の要因により若干違いが生じる場合があります。

  • 直列化設定

  • LINQ 設定

C# Analyzer が生成する翻訳と実行時にクエリの違いは、コードを分析およびデバッグする能力に影響を与えないはずです。

シリアル化と LINQ 設定の詳細については、 FAQページ をご覧ください。

C# Analyzerを使用して、LINQ 式に関する次の情報を学習します。

  • LINQ 式は MongoDB Query API にどのように変換されるか

  • LINQ 式のいずれかがサポートされていない場合

LINQ 式とそれに対応する MongoDB Query 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# Analyzer によって生成された MongoDB Query API の翻訳には、.NET/C# ドライバー コードの変数名が含まれています。 .NET/C# ドライバーは、アプリケーションが MongoDB と通信するときに、これらの変数名を対応する値に置き換えます。

Visual Studio で LINQ 式を分析するには、次のアクションを実行します。

  1. インストールガイドの説明に沿って、C# Analyzer をインストールします。

  2. .NET/C# ドライバーを使用して LINQ 式を記述します。

  3. LINQ 式の最初のメソッドの下の ...注釈の上にマウスを移動すると、MongoDB Query API の翻訳を含む情報メッセージが表示されます。

C# Analyzerは、次の構文タイプの LINQ 式を分析します。

  • メソッド構文

  • クエリ構文

次の対応するタブをクリックすると、メソッド構文で記述された LINQ 式が情報メッセージの有無にかかわらず表示されます。

Visual Studio で省略記号注釈付きの LINQ 式のスクリーンショット。
Visual Studio に表示される情報メッセージを含む、LINQ 式のスクリーンショット。

次の対応するタブをクリックすると、クエリ構文で記述された LINQ 式が情報メッセージの有無にかかわらず表示されます。

Visual Studio で省略記号注釈付きの LINQ 式のスクリーンショット。
Visual Studio に表示される情報メッセージを含む、LINQ 式のスクリーンショット。

LINQ 式がサポートされていない場合、C# Analyzer は MALinq2001警告を出力します。

次のコード スニペットには、サポートされていないGetHashCode LINQ 式が含まれています。

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

C# Analyzer はサポートされていない式に注釈を表示し、次の警告メッセージを生成します。

Expression not supported: b.GetHashCode().

次のスクリーンショットは、注釈付きのコードと、注釈にカーソルを合わせると表示される警告を示しています。

サポートされていない LINQ から Visual Studio に表示される警告のスクリーンショット。

Tip

エラー リスト パネル

Visual Studio for Windowsを使用している場合は、 エラー リストウィンドウでC# Analyzer からの出力を表示できます。

詳細については、 Microsoftの「 エラー リスト ウィンドウ 」を参照してください。

サポートされていない LINQ 式の例をさらに見るには、 MongoDB C# Analyzer Githubリポジトリ を参照してください。

LINQ 3式を分析するには、LINQ 3プロバイダーを使用するように C# Analyzer を構成する必要があります。 LINQ プロバイダーを構成する方法については、構成ガイド を参照してください。

重要

LINQ 3のみでサポートされている式

.NET/C# ドライバー バージョンが LINQ 3をサポートしているが、デフォルトの LINQ プロバイダー(LINQ 2 )を使用するように C# Analyzer を構成すると、C# Analyzer は LINQ 式が LINQ 3によってサポートされているが、サポートされていないかどうかを通知します。 LINQ 2 。

タブをクリックすると、LINQ 3ではサポートされている LINQ 式が LINQ 2ではサポートされていない LINQ 式と、C# Analyzer による対応する警告出力が表示されます。

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リポジトリ を参照してください。

戻る

ビルダ式

項目一覧