Docs Menu
Docs Home
/
MongoDB C# Analyzer
/

LINQ 式の分析

項目一覧

  • Overview
  • MongoDB Query API への変換
  • Visual Studio での LINQ の分析
  • 単純な LINQ 式
  • サポートされていない LINQ 式
  • Analyze LINQ3

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 は NotSupportedLinqExpression警告を出力します。

次のタブをクリックすると、サポートされていない LINQ 式を含むコード スニペットと、それに対応する警告メッセージがC# Analyzerによって表示されます。

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

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

次のスクリーンショットは、Visual Studio の前述のコード スニペットの下に、C# Analyzer によって表示される注釈を示しています。

サポートされていない LINQ 式の下の注釈のスクリーンショット

以下は、C# Analyzer によって生成された警告です。

Expression not supported: b.GetHashCode().

次のスクリーンショットは、Visual Studio に表示される警告を示しています。

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

Tip

エラー リスト パネル

Visual Studio for Windows を使用している場合は、エラー リスト ウィンドウで {+製品+-短い} からの出力を表示できます。

詳細については、「 エラー リスト ウィンドウ 」 を参照してください。 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# ドライバーが LINQ プロバイダーでのみサポートする式の例については、3 MongoDB C# Analyzer Github リポジトリ を参照してください。

戻る

ビルダ式