Docs Menu

LINQ 式の分析

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

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

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

  • LINQ (Microsoft C# ガイド)

集計パイプラインの詳細については、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 式が情報メッセージの有無にかかわらず表示されます。

Screenshot of LINQ expression with an ellipsis annotation in Visual Studio.
Screenshot of LINQ expression with an information message displayed in Visual Studio.

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

Screenshot of LINQ expression with an ellipsis annotation in Visual Studio.
Screenshot of LINQ expression with an information message displayed in Visual Studio.

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

The following code snippet contains the unsupported GetHashCode LINQ expression:

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

The C# Analyzer shows an annotation on the unsupported expression and generates the following warning message:

Expression not supported: b.GetHashCode().

The following screenshot shows the annotated code and the warning displayed when you hover over the annotation:

Screenshot of warning displayed in Visual Studio from unsupported LINQ.

Tip

エラー リスト パネル

If you are using Visual Studio for Windows, you can view the output from the C# Analyzer in the Error List window.

詳細については、「 エラー リスト ウィンドウ 」 を参照してください。 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 リポジトリ を参照してください。