我正在尝试将名称列表复制到 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)
谁能解释为什么第一个解决方案不在数据库查询中使用修剪后的字符串版本?
谢谢