实体框架查询中 string.Trim() 的行为

2023-12-30

我正在尝试将名称列表复制到 SQL Server 表中,我为其设置了实体框架项目。

名称列表有重复的值,并且有几个值末尾有空格。我希望只插入表中尚未存在的名称,并删除它们末尾的空格。看起来相当简单,对吧?

我的解决方案是这样的:

if (!context.Names.Any(n => n.Value == nameToCopy.Trim())
  context.Names.Add(nameToCopy.Trim())

注意。这不是我的确切代码,只是一个示例,因此无需提及我正在修剪两次!

令我惊讶的是,上面的内容并没有按照我的预期工作。我在分析上述陈述时发现if (!context.Names.Any(n => n.Value == nameToCopy.Trim())实际上并不查询 nameToCopy 的修剪版本 - 几个查询的名称末尾有空格。

但是,如果我执行以下操作,它将按预期工作:

string trimmedName = nameToCopy.Trim()
if (!context.Names.Any(n => n.Value == trimmedName)
      context.Names.Add(trimmedName)

谁能解释为什么第一个解决方案不在数据库查询中使用字符串的修剪版本?

Thanks


总体结果应该是相同的。你的个人资料怎么样?

!context.Names.Any(n => n.Value == nameToCopy.Trim())

上面是 Linq to Entities.Trim()转换为 SQLRTRIM(LTRIM())字符串 var 以其原始状态发送到 SQL Server,并作为查询的一部分进行修剪。

string trimmedName = nameToCopy.Trim()
if (!context.Names.Any(n => n.Value == trimmedName)

鉴于以上,.Trim()是正常的System.String.Trim()并且字符串 var 在发送到 SQL Server 之前被修剪。

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

实体框架查询中 string.Trim() 的行为 的相关文章

随机推荐

  • 云技术的最佳概述是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 围绕云技术有很多讨论 您会推荐哪些资源来回顾云计算世界并帮助人们了解大局 and 当前的趋势 除了阅读这
  • 具有尾随返回类型的模板成员函数,即使未使用也会出错

    据我所知 模板成员函数仅在使用时才会生成 如果不是所有使用的类型都支持这样的功能 这很方便 但是 这似乎不适用于具有尾随返回类型规范的函数 下面是一个小实验 helper function for case A workaround tem
  • 如何显示未促销的 WooCommerce 产品?

    我想展示非销售产品仅意味着常规产品 排除销售产品 在 WooCommerce 中 我的页面仅显示常规产品 那么谁能告诉我该怎么做 我设法过滤掉没有销售的产品 并将下面的代码放置在if have posts args array post t
  • phpMyAdmin - 错误:关系功能被禁用

    当我想使用 phpMyAdmin 4 3 8 在设计器模式下创建两个表之间的关系时 它给我一个错误 错误 关系功能已禁用 当我尝试使用 4 1 4 时 它工作得很好 我似乎找不到应该在哪里更改设置才能在设计器模式下创建关系 任何想法 提前致
  • Paperclip S3 下载远程图像

    如何下载远程图像 http协议 url位于image remote url属性中 并通过Paperclip将其保存为S3的附件 class Product lt ActiveRecord Base require open uri attr
  • 在固定时间后中断线程,是否必须抛出InterruptedException?

    我想在固定时间后中断线程 其他人问了同样的问题 投票最高的答案 https stackoverflow com a 2275596 1310503 https stackoverflow com a 2275596 1310503 给出了下
  • 在 MacOSX (Macbook Pros) 上以编程方式读取 CPU 温度(+其他传感器数据)

    我想以编程方式从我的 MacBook Pro 2009 型号 读取 CPU 温度和任何其他有趣的传感器数据 我该怎么做 我注意到一个上一篇文章 https stackoverflow com questions 2216888 how to
  • 在 Spring 中格式化/缩进 JaxB 编组器

    我正在尝试对 Spring 中的 Jaxb2Marshaller 类的输出 XML 进行 PrettyPrint 缩进 格式化 即使我输入的属性如 Web 上其他地方所见 该文件仍然全部在一行上 这是我的 bean 声明
  • C++:我想在所有 CPP 文件之间使用这个配置类,如何初始化它?

    class Config public static int OUTPUT TO FILE static int NEED TO TRAIN static int NO FILE TRAIN static int NEED TO TEST
  • Java 创建临时文件

    名称的最大长度是多少TempFile在java中和MaximumFilesize取决于 在我们提到要创建的临时目录或其他基于java的机器上 何时致电deleteOnExit 方法 但是这个方法有什么用 因为它会在 JVM 关闭时被调用 但
  • Glide - 下载 GIF 并调整其大小到文件中

    我需要下载一个 GIF 并将其保存到外部存储 以便我可以通过彩信发送它 消息的大小限制为 300kb 并且大多数 GIF 太大 因此我需要调整它们的大小 我在项目的其余部分中使用 Glide Glide 有一个漂亮的功能 理论上应该下载调整
  • twitter bootstrap form-group 的 AngularJS 指令

    我最近一直在玩 Angular 到目前为止一切都很好 但我在指令方面遇到了困难 我正在尝试创建一个指令 为标准引导表单组生成 html 标记及其相应的验证消息 所以基本上我正在尝试转换它
  • Couchdb - 是否可以停用reduce_overflow_error错误

    我正在开发一个映射 归约 它在重新归约的情况下并不能准确地返回我所期望的结果 我想调试它 但我至少也想看看里面有什么 所以我输出了很多东西 Couch 返回了一个reduce overflow error每次我运行视图时 是否可以停用此行为
  • 正确使用 NSGetExecutablePath

    我尝试在运行时获取应用程序的路径 我找到了一些来自 C 的旧源代码 并将其相应地转换为函数参数类型定义 var path Int8 count 1024 repeatedValue 0 var bufsize UInt32 1024 if
  • 如何在多个字段上使用 SearchHeadline 和 SearchVector

    我需要一个搜索多个字段并返回一个突出显示匹配单词的 标题 我的理解是 SearchVector 是跨多个字段搜索的合适选择 但我见过的所有 SearchHeadline 示例都只使用一个字段 将 SearchHeadline 与多个字段结合
  • Spring Cloud Gateway 和 TokenRelay 过滤器

    我正在尝试将 JHipster 从使用 Zuul 迁移到 Spring Cloud Gateway JHipster 使用 Eureka 来查找路由 我相信我已经正确配置了 Spring Cloud Gateway 来查找路由并将访问令牌传
  • 调整 UIPrintInteractionController 的 UIImage 大小

    我目前正在研究通过 Airprint 打印视图内容的可能性 对于此功能 我从视图创建一个 UIImage 并将其发送到 UIPrintInteractionController 问题在于图像的大小被调整为纸张的完整分辨率 而不是原始大小 大
  • 使用 Ionic Zip 库将文件夹添加到 Zip 根目录

    我想要做的是使用 Ionic Zip 库 c 将文件夹和文件列表全部添加到我的 Zip 文件的根目录中 这是我到目前为止所拥有的 string k B My Documents Workspace private void button1
  • 运行Android应用程序会产生java.lang.NoClassDefFoundError:retrofit.RestAdapter$Builder

    我正在 Android 上使用 Flickr API 制作一个照片库应用程序 使用 Eclipse 和 4 4 SDK 该项目已成功编译 但应用程序在再次运行 4 4 的 Nexus 7 2012 上启动后立即崩溃 我的构建路径中包含以下
  • 实体框架查询中 string.Trim() 的行为

    我正在尝试将名称列表复制到 SQL Server 表中 我为其设置了实体框架项目 名称列表有重复的值 并且有几个值末尾有空格 我希望只插入表中尚未存在的名称 并删除它们末尾的空格 看起来相当简单 对吧 我的解决方案是这样的 if conte