程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了LINQ to Entities区分大小写的比较大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决LINQ to Entities区分大小写的比较?

开发过程中遇到LINQ to Entities区分大小写的比较的问题如何解决?下面主要结合日常开发的经验,给出你关于LINQ to Entities区分大小写的比较的解决方法建议,希望对你解决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");

解决方法

@H_197_57@

这不是LINQ与Entities区分大小写的比较:

Thingies.First(t => t.Name == "ThingamaBob");

如何通过LINQ to Entities实现区分大小写的比较?

大佬总结

以上是大佬教程为你收集整理的LINQ to Entities区分大小写的比较全部内容,希望文章能够帮你解决LINQ to Entities区分大小写的比较所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。