首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串Text.ToUpper()在C# VisualStudio2017 ver15.1.1中的Linq查询缓慢

字符串Text.ToUpper()在C# VisualStudio2017 ver15.1.1中的Linq查询缓慢
EN

Stack Overflow用户
提问于 2018-05-17 14:17:03
回答 1查看 328关注 0票数 2

我有以下代码,需要5-8秒才能完成:

代码语言:javascript
复制
recent_items returnedData = (from d in db.recent_items
                             where d.item_number == scannerInput.Text.ToUpper()
                             select d).FirstOrDefault();

其中,以下内容在不到半秒钟内执行:

代码语言:javascript
复制
string search = scannerInput.Text.ToUpper();

recent_items returnedData = (from d in db.recent_items
                             where d.item_number == search
                             select d).FirstOrDefault();

世界上发生了什么事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-17 14:37:18

造成差异的最可能原因是EF在从RDBMS检索所有行之后评估内存中的第一个条件。

微软文档介绍了关于客户端与服务器评估的以下内容

支持在客户端上评估的部分查询以及将其部分推送到数据库。应由数据库提供程序来确定查询的哪些部分将在数据库中计算。

您的EF提供程序无法将scannerInput.Text.ToUpper()发送给关系数据库管理系统进行评估,因此在从数据库中检索数据行之后,它会在内存中进行所有比较。此决定是正确的,因为EF DB提供程序不能假定对上述表达式的连续计算将产生相同的结果。

另一方面,第二个查询为查询使用了一个捕获的变量。在EF运行查询时,该变量的值保证保持不变,因此它继续在RDBMS端计算请求。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50393776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档