Docs 菜单
Docs 主页
/
MongoDB C# Analyzer
/

分析 LINQ 表达式

在此页面上

  • Overview
  • 转换为 MongoDB 查询 API
  • 在 Visual Studio 中分析 LINQ
  • 简单 LINQ 表达式
  • 不支持的 LINQ 表达式
  • Analyze LINQ3

LINQ是C#语言中包含的一种查询语法。 .NET/ C#驾驶员可以将 LINQ 表达式的子集转换为MongoDB聚合管道。

要了解有关 LINQ 的更多信息,请参阅以下资源:

  • .NET/ C#驾驶员文档中的LINQ

  • Microsoft C#指南中的 LINQ

要了解有关聚合管道的更多信息,请参阅 MongoDB 手册中的聚合

注意

运行时差异

虽然 C# 分析器生成的 MongoDB 查询 API 转换与运行时 .NET/C# 驱动程序查询具有相同的查询结构,但由于以下因素,可能会略有不同:

  • 您的序列化设置

  • 您的 LINQ 设置

C# 分析器生成的转换与运行时查询之间的差异不应影响分析和调试代码的能力。

要学习;了解有关序列化和 LINQ 设置的详情,请参阅常见问题解答页面。

使用 C# 分析器了解有关 LINQ 表达式的以下信息:

  • LINQ 表达式如何转换为MongoDB查询API

  • 如果您的任何 LINQ 表达式不受支持

单击以下标签页可查看 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# 驱动程序代码中的变量名称。 当您的应用程序与 MongoDB 通信时,.NET/C# 驱动程序会将这些变量名称替换为相应的值。

要在 Visual Studio 中分析LINQ 表达式,请执行以下操作:

  1. 按照安装指南中的说明安装 C# 分析器。

  2. 使用 .NET/C# 驱动程序编写 LINQ 表达式。

  3. 将鼠标移到 LINQ 表达式的第一个方法下方的 ...注解上,以显示一条包含 MongoDB Query API 转换的信息消息。

C# 分析器分析以下语法类型的 LINQ 表达式:

  • 方法语法

  • 查询语法

单击以下相应标签页可查看以方法语法编写的 LINQ 表达式,显示或不显示信息消息:

Visual Studio 中带有省略号注释的 LINQ表达式的屏幕截图。
LINQ表达式的屏幕截图,其中包含 Visual Studio 中显示的信息消息。

单击以下相应标签页可查看以查询语法编写的 LINQ 表达式,显示或不显示信息消息:

Visual Studio 中带有省略号注释的 LINQ表达式的屏幕截图。
LINQ表达式的屏幕截图,其中包含 Visual Studio 中显示的信息消息。

如果您的 LINQ 表达式不受支持,C# 分析器会输出 NotSupportedLinqExpression警告。

单击以下标签页可查看包含不受支持的 LINQ 表达式的代码片段以及 C# 分析器显示的相应警告消息:

以下代码片段包含不受支持的GetHashCode LINQ表达式:

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

以下屏幕截图显示了 Visual Studio 中 C# 分析器在上述代码片段下方显示的注解:

不支持的 LINQ表达式下方注释的屏幕截图

以下是C# Analyzer生成的警告:

Expression not supported: b.GetHashCode().

以下屏幕截图显示了 Visual Studio 中显示的警告:

Visual Studio 中显示的有关不支持 LINQ 的警告屏幕截图。

提示

错误列表面板

如果使用的是 Visual Studio for Windows,则可以在“错误列表”窗口中查看 {+product+-short} 的输出。

要了解详情,请参阅来自 Microsoft 的错误列表窗口

要查看不支持的 LINQ 表达式的更多示例,请参阅 MongoDB C# Analyzer Github 存储库。

若要分析 LINQ 3表达式,必须将 C# 分析器配置为使用 LINQ 3提供程序。 若要了解如何配置 LINQ 提供程序,请参阅配置指南。

重要

仅 LINQ 3支持的表达式

如果您的 .NET/C# 驱动程序版本支持 LINQ 3 ,但您将 C# 分析器配置为使用默认 LINQ 提供程序 (LINQ 2 ),则 C# 分析器会通知您 LINQ 3是否支持您的 LINQ 表达式,但不支持LINQ 2 。

单击标签页可查看 LINQ 3支持但 LINQ 2不支持的 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存储库。

后退

构建器表达式