LINQ 式の分析
Overview
LINQは、C# 言語に含まれるクエリ構文です。 .NET/C# ドライバーは、LINQ 式のサブセットを MongoDB 集計パイプラインに変換できます。
LINQ の詳細については、次のリソースを参照してください。
集計パイプラインの詳細については、MongoDB マニュアルの集計を参照してください。
注意
ランタイムの差
C# Analyzerを使用して、LINQ 式に関する次の情報を学習します。
LINQ 式は MongoDB Query API にどのように変換されるか
LINQ 式のいずれかがサポートされていない場合
MongoDB Query API への変換
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 の分析
Visual Studio で LINQ 式を分析するには、次のアクションを実行します。
インストールガイドの説明に沿って、C# Analyzer をインストールします。
.NET/C# ドライバーを使用して LINQ 式を記述します。
LINQ 式の最初のメソッドの下の ...注釈の上にマウスを移動すると、MongoDB Query API の翻訳を含む情報メッセージが表示されます。
単純な LINQ 式
C# Analyzerは、次の構文タイプの LINQ 式を分析します。
メソッド構文
クエリ構文
次の対応するタブをクリックすると、メソッド構文で記述された LINQ 式が情報メッセージの有無にかかわらず表示されます。
次の対応するタブをクリックすると、クエリ構文で記述された LINQ 式が情報メッセージの有無にかかわらず表示されます。
サポートされていない LINQ 式
LINQ 式がサポートされていない場合、C# Analyzer は NotSupportedLinqExpression
警告を出力します。
次のタブをクリックすると、サポートされていない LINQ 式を含むコード スニペットと、それに対応する警告メッセージがC# Analyzerによって表示されます。
次のコード スニペットには、サポートされていないGetHashCode
LINQ 式が含まれています。
var result = queryableColl.Where(b => b.GetHashCode() == 167);
次のスクリーンショットは、Visual Studio の前述のコード スニペットの下に、C# Analyzer によって表示される注釈を示しています。
以下は、C# Analyzer によって生成された警告です。
Expression not supported: b.GetHashCode().
次のスクリーンショットは、Visual Studio に表示される警告を示しています。
Tip
エラー リスト パネル
Visual Studio for Windows を使用している場合は、エラー リスト ウィンドウで {+製品+-短い} からの出力を表示できます。
詳細については、「 エラー リスト ウィンドウ 」 を参照してください。 Microsoft が提供する。
サポートされていない LINQ 式の例をさらに見るには、 MongoDB C# Analyzer Github リポジトリ を参照してください。
Analyze LINQ3
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 リポジトリ を参照してください。