大佬教程收集整理的这篇文章主要介绍了LINQ to Entities区分大小写的比较,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
那是因为您使用的是 liNQ To EntitIEs ,最终将Lambda表达式转换为sql语句。这意味着区分大小写 您的sql Server,默认情况下,sql Server具有 排序规则,并且不区分大小写。
使用 ObjectQuery.ToTraceString 查看实际上已提交给sql Server的生成的SQL查询揭示了一个奥秘:
String sqlquery = ((Objectquery)context.ThingIEs
.Where(t => t.name == "ThingamaBob")).ToTraceString();
创建 liNQ to EntitIEs 查询时, liNQ to EntitIEs 利用liNQ解析器开始处理查询,并将其转换为liNQ表达式树。然后将liNQ表达式树传递给 API,后者将表达式树转换为命令树。然后将其发送到存储提供程序(例如SQLClIEnt),后者将命令树转换为本地数据库命令文本。查询中获取的数据存储执行,结果被物化 为 实体对象 的 对象服务 。两者之间未考虑逻辑区分大小写。因此,无论您将谓词放在哪种情况下,除非您更改该列的sql Server排序规则,否则sql Server始终将其视为相同。
因此,最好的解决方案是将 ThingIEs 表中“ 名称” 列的排序 更改 为ColLATE ,这是区分大小写的,方法是在sql Server上运行以下命令:
alter table ThingIEs
alter colUMN name varchar(25)
ColLATE laTin1_General_CS_AS
有关 sql Server 更多信息,请查看
您可以在客户端应用的唯一解决方案是使用 liNQ to Objects 进行另一个似乎不太优雅的比较:
ThingIEs.Where(t => t.name == "ThingamaBob")
.AsEnumerable()
.First(t => t.name == "ThingamaBob");
以上是大佬教程为你收集整理的LINQ to Entities区分大小写的比较全部内容,希望文章能够帮你解决LINQ to Entities区分大小写的比较所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。