性能:.Join 与 .Contains - Linq to Entities

2023-12-27

我正在使用 Linq to 实体查询数据库以获取 int 列表以进行进一步处理。我有两种方法来获取列表,如下所示:

首先是:

List<int> lstBizIds = new List<int>() { 1, 2, 3, 4, 5 };
List<int> lstProjectIds = context.Projects.Where(x => lstBizIds.Contains(x.businessId)).Select(x => x.projectId).ToList();

第二是:

List<int> lstBizIds = new List<int>() { 1, 2, 3, 4, 5 };
List<int> lstProjectIds = context.Projects.Join(lstBizIds, p => p.businessId, u => u, (p, u) => p.projectId).ToList();

现在我的问题是上述哪一种方法性能更好?如果第一个列表(即 lstBizIds)的大小增加,它还会影响性能吗?如果会降低性能,请向我建议其他实施方式。


你应该去Contains,因为 EF 可以产生更高效的查询。

这将是 SQL 连接:

SELECT Id
FROM Projects
INNER JOIN (VALUES (1), (2), (3), (4), (5)) AS Data(Item) ON Projects.UserId = Data.Item

这将是 SQL 包含:

SELECT Id
FROM Projects
WHERE UserId IN (1, 2, 3, 4, 5, 6)

IN比更有效JOIN因为 DBMS 可以停止查找第一个匹配项IN; the JOIN总是会结束,即使是在第一场比赛之后。

您可能还想检查哪些查询实际发送到数据库。您始终必须比较 SQL,而不是 LINQ 代码(显然)。

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

性能:.Join 与 .Contains - Linq to Entities 的相关文章

  • 如何使用最小起订量模拟私有只读 IList 属性

    我试图嘲笑这个列表 private readonly IList
  • SQL 中的代码重用和模块化

    代码重用和模块化对于 SQL 存储过程编程来说是一个好主意吗 如果是这样 将这些功能添加到 SQL 存储过程代码库的最佳方法是什么 我通常为常见且重复的任务创建标量值函数 我发现它不仅可以简化与现有程序类似的新程序的开发 而且还有助于错误跟
  • 无需登录即可在 Intranet 上获取 Web 应用程序的域\用户名

    我的 Intranet 上有一个 Web 应用程序 VS 2005 有几个页面不需要用户登录应用程序 反馈和默认页面 我正在尝试获取要显示和 或发送反馈的域名和用户名 有没有一种方法可以在不需要用户登录的情况下执行此操作 我试过了this
  • 当 foreach 块的内容具有 Conditional 属性时,C# 编译器是否会对其进行优化?

    我正在工作中编写一些调试代码 我想知道我所做的是否会损害性能 让我们看一下代码 foreach var item in aCollection Debug WriteLine item Name 我知道 Debug 类使用 Conditio
  • std::bind2nd 和 std::bind 与二维数组和结构数组

    我知道 C 有 lambda 并且 std bind1st std bind2nd 和 std bind 已弃用 然而 从C 的基础开始 我们可以更好地理解新特性 所以 我从这个非常简单的代码开始 使用int 数组s 第一个例子 与std
  • ASMX Web 服务,测试表单仅在本地计算机上适用于一种 WebMethod

    我有一个正在测试的 ASMX WebService 并且在大多数方法上我都可以使用测试表单进行测试 然而 我确实有一种方法 测试表上写着 The test form is only available for requests from t
  • 如何将 Visual-Studio 2010 切换到 c++11

    我是 c 编程新手 我想尝试 c 11 新功能 那么我要问的是如何切换 Visual studio 2010 才能编译 c 11 源代码 你可以参考这个表 VC10 中的 C 0x 核心语言功能 表格 http blogs msdn com
  • C# 实体框架我们应该使用 POCO.Id 还是仅使用 POCO 设置关系?

    我在服务方法中遇到一种情况 将 POCO 分配为另一个 POCO 的子对象无法按预期工作 我正在使用实体框架 4 public void ChangeOrderCurrency Currency currency order Currenc
  • 使用默认行为将模型绑定到接口

    我正在尝试将控制器操作绑定到接口 但仍保持默认的绑定行为 public class CoolClass ISomeInterface public DoSomething get set ISomeInterface public clas
  • C#生成的csv文件通过电子邮件发送嵌入到Lotus Note中电子邮件的底部

    我遇到了一个奇怪的问题 即使用 NET SmtpClient 通过电子邮件发送的 CSV 附件出现在电子邮件底部 而不是 Lotus Note 中的附件 我只是不知道如何解决这个问题 而且我无法访问客户端计算机 这使得调试非常困难 我可以采
  • 多个线程访问一个变量

    我在正在读的一本教科书中发现了这个问题 下面也给出了解决方案 我无法理解最小值怎么可能是 2 为什么一个线程不能读取 0 而所有其他线程都执行并写入 1 而无论是1还是2 最后写入的线程仍然必须完成自己的循环 int n 0 int mai
  • 从二进制文件读取字节到 long int

    我有两个问题 我有二进制文件的数据 我想使用 read 函数读取前 8 个字节以签署 long int 但我不能 你知道我该怎么做吗 如何直接读取一块数据到字符串中 我可以像所示那样阅读吗 前任 ifstream is is open te
  • Web 文本编辑器中的 RTF 格式

    网络上是否有支持 RTF 格式文档输入的文本编辑器 我知道这对 webdev 来说有点奇怪 但我需要从数据库中读取 RTF 文档 并在基于 Web 的文本编辑器中对其进行编辑 然后将其存储回 RTF 中 在我在转换工具上投入太多资金之前 我
  • 如果项目包含多个文件夹,如何使用 Add-Migration

    我想Add Migration使用我的 DbContext 但出现错误 The term add migration is not recognized as the name of a cmdlet function script fil
  • SSIS Master 包执行来自另一个项目的包

    我有多个SSIS项目 但其中的一些包是相同的 我想创建一个包含所有内容的项目generic包并将其他项目与他们的特定包一起保存 所以我的问题是 是否有可能有一个主包可以执行并将父变量传递给另一个项目的包 我是 SSIS 新手 如果这是一个明
  • 使用联合对 IP 地址进行多种解释?

    在工作中 我们使用以下构造来将 IP 地址解释为 4 字节数组或 32 位整数 union IPv4 std uint32 t ip std uint8 t data 4 这很好用 但是读完这本书的第 97 章 不要使用联合来重新解释表示
  • 模板定义中的友元函数

    我的问题有点相关this https stackoverflow com questions 1297609 overloading friend operator for template class one 我想重载某些类的运算符 te
  • 如何在 SQLite 中检查数据库是否存在 C#

    我目前正在用 C 编写一个应用程序 并使用 sqlite 作为嵌入式数据库 我的应用程序在启动时创建一个新数据库 但如何让它检查数据库是否存在 如果它确实存在 我如何让它使用它 如果不存在如何创建一个新数据库 这是我到目前为止所拥有的 pr
  • C# 和断点 - 这里有魔术师吗?

    我有这个 public static void ByLinkText string text for var i 0 i lt 50 i try Setup Driver FindElement By LinkText text Click
  • 在两个点之间创建一条曲线,每个点都具有标准化向量

    因此 我需要一种写入方法来在两点之间创建一条曲线 每个点都有一个指向任意方向的归一化向量 我一直在尝试设计这样一种方法 但一直无法理解数学 在这里 由于一张图片胜过一千个文字 这就是我所需要的 在图中 矢量垂直于红线 我相信向量需要进行相同

随机推荐

  • php使用特殊符号

    这提供了一个可点击的链接名称 个人资料 但如果个人资料为空 它会显示 如何改进它 以便当个人资料记录为空时 它什么也不显示 您有许多不必要的打开和关闭 php 标签 鉴于您的代码 您应该只使
  • 按功能将 MySQL 存储分配到驱动器

    我想知道 MySQL 是否有能力指定将属于某个帐户 例如 代表特定应用程序或特定公司程序 的数据存储在文件系统中的某个特定位置 例如特定驱动器或 RAID 而不是将其捆绑在由 MySQL 为该服务器上的每个人管理的所有其他帐户 表和数据元素
  • 如何将 Pandas groupby 结果广播到所有行?

    使用 Pandas 1 0 1 给定这个演示数据框 我想用在子组 框 上计算的中值替换数字列重量和价格 不修改原始数据框 import pandas as pd import numpy as np df pd DataFrame box
  • 如何将 Perl 脚本的输出包含到 PHP 页面中?

    我们被要求在新站点上支持一些相当旧的 Perl 表单 因为我们使用的是基于 PHP 的 CMS 所以我们需要将 Perl 脚本包含到新的 CMS 中 我尝试了一些 shell exec 但它被禁用了 有人有什么想法吗 Perl 扩展 有一个
  • ISO C++ 禁止声明没有类型的“某物”

    我是 C 模板编程的新手 所以我决定从编写模板列表开始 我在线收到此错误Node
  • Rails 4. 模型中的国家/地区验证

    我正在创建 Rails API 并且想要添加对国家 地区字段的验证 该字段包含模型级别的 ISO 3166 1 代码 例如如果使用 gem卡门铁路 https github com jim carmen rails 它只提供帮助者count
  • 读取数组或列表中的 SQL Server 列

    我想知道如何将 sql server 数据库中的列中包含的值复制到Array or a List 我在用着C 在 Web 应用程序项目 ASP NET 中 提前致谢 using SqlConnection cnn new SqlConnec
  • 调用另一个类中的过程

    我已经为 Outlook 2010 创建了一个加载项 我有一个带有按钮的功能区 当您单击该按钮时 我希望它调用 ThisAddIn vb 中的过程 有两个文件 ThisAddin vb 和 Ribbon vb 我尝试了几件事但无济于事 我也
  • Play 框架中的 Twitter bootstrap helper 是否已弃用?

    我经常在我的 Web 应用程序中使用 Twitter 引导表单模板助手 因为这非常简单 昨天我想创建一个带有水平字段的表单 可以在 GitHub 上找到请求请求 https github com playframework Play20 p
  • 一键更新所有 WCF 服务引用(单击两次也可以!)

    我有多个项目 其中包含多个 WCF 服务引用 我的 WCF 服务处于不断变化的状态 因此我经常需要四处走动并更新我的所有服务引用 有没有办法通过一次操作来实现这一目标 好吧 除了使用 IDE 您还可以使用svcutil通过构建脚本在命令行上
  • 如何在 Spring MVC 控制器中映射动态 url /prj/noticeOpen/2

    您好 我很难处理以下网址 a href noticeOpen 2 dynamicLink a 使用以下控制器方法进行映射 RequestMapping value noticeOpen quesId public ModelAndView
  • solr过滤器实际上是如何实现的?

    我对查询处理的理解是否正确 从缓存中获取 DocSet 或第一个过滤器查询将创建 OpenBitSet 或 SortedVIntSet 的实现并缓存它 从缓存中获取 DocSet 或所有其他过滤器创建它们的 DocBitSet 实现 并将与
  • 类型参数 '{ useNewUrlParser: boolean; useUnifiedTopology: boolean}' 不可分配给类型' 的参数

    我正在尝试将 Node js 服务器连接到 Atlas mongo 数据库 我为此使用猫鼬 await mongoose connect process env MONGO URI useNewUrlParser true useUnifi
  • 这些选择器之间的区别[重复]

    这个问题在这里已经有答案了 这些选择器之间有什么区别吗 div demo and div demo div demo and div demo 它选择相同的元素吗 div demo some code div demo some code
  • 使用以前版本的 Xcode 在不受支持的 iOS 版本上进行构建

    升级到 iOS 6 后 我不得不使用有很多问题的 XCode 4 5 来构建我的设备 这让我感到沮丧 不幸的是 由于某种原因 这个版本的 Xcode 不允许我的应用程序推送或弹出视图控制器 当我切换回 XCode 4 3 2 时 这个问题就
  • 如何更改android studio中的编码

    我想更改编码UTF 8 from UTF 16用于展示Unicode 如何更改android studio中的编码 我在互联网上搜索 但结果没有 查看 Android Studio 窗口的右下部分 只需单击相应的下拉菜单 在本例中 该下拉菜
  • DropWizard 中可以有多个配置文件吗?

    我想要几个用于 DropWizard 的 yaml 文件 其中一份包含敏感信息 一份包含非敏感信息 您能给我指出如何在 DropWizard 中进行多种配置的任何文档或示例吗 ConfigurationSourceProvider是你的答案
  • ASP.NET 中 maxPageStateFieldLength 的最佳值是多少

    在视图状态跨度为 10 15KB 的页面中 最佳值是多少
  • 将考勤记录存储在数据库中

    我发现之前有人问过类似的问题 学校出勤数据库 https stackoverflow com questions 1021580 database design for school attendance system 我必须处理这些额外的
  • 性能:.Join 与 .Contains - Linq to Entities

    我正在使用 Linq to 实体查询数据库以获取 int 列表以进行进一步处理 我有两种方法来获取列表 如下所示 首先是 List