为什么以下 linq to sql 查询会生成子查询?

2023-11-24

我做了以下查询:

var list = from book in books
          where book.price > 50
          select book;

list = list.Take(50);

我希望上面的内容会生成如下内容:

SELECT top 50 id, title, price, author
FROM Books
WHERE price > 50

但它会生成:

SELECT
[Limit1].[C1] as [C1]
[Limit1].[id] as [Id], 
[Limit1].[title] as [title], 
[Limit1].[price] as [price], 
[Limit1].[author]
FROM (SELECT TOP (50) 
             [Extent1].[id] as as [Id], 
             [Extent1].[title] as [title], 
             [Extent1].[price] as [price], 
             [Extent1].[author] as [author]
      FROM Books as [Extent1]
      WHERE [Extent1].[price] > 50
     ) AS [Limit1]

为什么上面的 linq 查询会生成子查询,C1 来自哪里?


免责声明:我以前从未使用过 LINQ...

我的猜测是分页支持?我猜你有某种Take(50, 50)方法获取 50 条记录,从记录 50 开始。看看查询生成的 SQL,您可能会发现它使用类似的子查询结构,以允许它在大约相同的时间内返回查询中的任何 50 行它返回前 50 行。

在任何情况下,嵌套子查询都不会增加任何性能开销,因为它在执行计划编译期间会自动优化掉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么以下 linq to sql 查询会生成子查询? 的相关文章

随机推荐

  • MySQL:如何获取上次插入数据库的时间戳

    如何检查我在数据库中写入的最后一次 时间戳 是什么时候 无论我插入到哪个数据库表中 只需使用这个 SQL SHOW TABLE STATUS 并检查更新时间 column
  • JavaScript 算法确定平板电脑的方向

    我们正在构建一个为平板电脑开发的 HTML5 JavaScript 应用程序 我们希望以不同的方式在横向和纵向上布局我的屏幕 最初 我们捕获方向变化通知 并跟踪当前方向 通常报告为 0 90 90 或 180 度 请参阅这个问题 不幸的是
  • 使用 SQL Server 选择进行更新

    我正在使用具有隔离级别的 Microsoft SQL Server 2005 数据库READ COMMITTED and READ COMMITTED SNAPSHOT ON 现在我想使用 SELECT FROM
  • 使用注释插件 + JAXB 在 java“字段”中插入自定义注释(在 xsd -> java 上)

    使用案例 想要将自定义注释插入到 JAXB 生成的 java 类中的字段 Problem 使用注释插件 JAXB 1 我能够成功插入自定义注释 但它们是在 getter 方法而不是字段中插入的 然而 Morphia mongo DB 注释
  • Matplotlib 和底图:无法导入名称“dedent”

    我正在尝试在底图叠加层上绘制网络 我有包裹 底图 1 3 0 py36ha7665c8 0 matplotlib 3 3 1 0 matplotlib base 3 3 1 py36hba9282a 0 网络x 2 5 py 0 当我只运行
  • 永远不会执行的代码会调用未定义的行为吗?

    调用未定义行为 在本例中为除零 的代码永远不会被执行 程序仍然是未定义行为吗 int main void int i if 0 i 1 0 return 0 我认为这仍然是未定义的行为 但我在标准中找不到任何证据来支持或否定我 那么 有什么
  • ThreadPool.QueueUserWorkItem 中的最大排队元素数

    我将最大线程设置为 10 然后我使用 ThreadPool QueueUserWorkItem 添加了 22000 个任务 运行程序后很可能没有完成所有22000个任务 可用线程排队的任务数量是否有限制 如果您需要等待所有任务处理完毕 则需
  • C++ AddressSanitizer 与 CMakeLists.txt 导致 asan 错误

    尝试使用地址消毒剂工具 ASan 在我的 C 项目中 我得到了一个非常详细的输出 其中包含undefined reference to asan report store8 and undefined reference to asan r
  • 我可以直接在 gdb 漂亮打印机中调用程序的“operator[]”吗?

    我正在尝试使用 GDB 漂亮的打印功能来显示自定义 C 矩阵类 该课程非常标准 您可以在任何地方找到 它是一个由类型参数化的模板 可以通过像 mat i j 这样的 C 类型表示法来访问 首先隐式返回另一个表示行或列的模板 Slice 类
  • 自动在 .NET 可执行文件中嵌入多个图标

    我基本上和这个问题有同样的问题 在 WPF EXE 中嵌入多个图标 当您在资源管理器中单击 更改图标 时 我的 NET 2 0 WinForms 应用程序当前具有以下内容 source richard slater co uk 我想看到什么
  • Hybris 插件安装概念[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 使用默认值的最佳方式是怎样的Hybris addon 我们想在我们的项目中使用一些非常好的插件功能 但当然不完全是它们本来的样子 那么修改它们的最佳实践是什么 是不是将addon
  • 使用 powershell 导出带有私钥的证书,包括路径中的所有证书

    我正在编写 power shell 脚本来导出带有私钥的证书 其中还包括路径中的所有证书 我为此编写了一个脚本 它不包含路径或根证书中的证书 下面是脚本 如果我的脚本需要进行任何更改 请建议我 提前致谢 Password de08nt212
  • 使按钮 UIAlertView 执行 Segue

    我创建了一个UIAlertView一个给我两个选择的动作 我希望用户能够单击按钮并让它执行 Segue 这是我到目前为止的代码 IBAction switchView id sender UIAlertView myAlert UIAler
  • Nginx 下载 php 而不是运行它

    我在 Linux REHL 机器上设置了 Nginx php 服务器 当访问html文件时一切顺利 但尝试访问php文件时 文件被下载而不是被执行 这是我的 nginx conf user nginx worker processes 1
  • 带有复制/移动赋值运算符的enable_if

    我有一个类 仅当该类的类型参数不可分别构造复制 移动时 我才想在其中启用复制 移动赋值运算符 所以我尝试这样做 include
  • 二分查找算法的实现

    我遇到了多个使用变体的问题二分查找才能得出最终的答案 这些问题包括查找数字的平方根的底数 检查数字是否是完全平方数 查找旋转数组中的最小值 查找数组中数字的第一个索引等 所有算法都包含经过适当修改的低 高和中变量 我在线阅读了这些算法的几种
  • 为什么 ASP.NET 中的 cookie 过期日期无法跨会话保存?

    我对测试平台页面进行了一些更改 因此我可以在这里使我的问题更清楚 该页面共有三个按钮 设置 清除 并获取 Set有这个代码 PreferredCookie new HttpCookie PreferredCookie PreferredCo
  • 不支持颜色终端库 Python/Jupyter

    我正在尝试在 Windows 7 计算机上启动 Jupyter Notebook 服务器 但在输入以下内容后 我不断收到这个奇怪的 看似无法搜索的错误 jupyter notebook 进入cmd exe C Users zfleeman
  • Google 云平台(GCP) 未知错误。原始错误消息:操作失败:区域中 CPU 配额不足

    我想创建一个 VPC 连接器来将 App 引擎连接到云 SQL 实例 由于连接器应与 SQL 实例位于同一区域 因此我选择了同一区域 但创建 VPC 连接器后出现错误 Unknown error Original error message
  • 为什么以下 linq to sql 查询会生成子查询?

    我做了以下查询 var list from book in books where book price gt 50 select book list list Take 50 我希望上面的内容会生成如下内容 SELECT top 50 i