首页 >后端开发 >C++ >如何在 LINQ to Entities 中执行区分大小写的比较?

如何在 LINQ to Entities 中执行区分大小写的比较?

Barbara Streisand
Barbara Streisand原创
2025-01-21 17:36:09175浏览

How Can I Perform Case-Sensitive Comparisons in LINQ to Entities?

LINQ to Entities中的大小写不敏感比较

与LINQ to Objects不同,LINQ to Entities并不直接支持大小写敏感比较。这是因为LINQ to Entities将Lambda表达式转换为SQL语句,这些语句最终由数据库(例如SQL Server)执行。默认情况下,SQL Server使用大小写不敏感的排序规则,这意味着以下查询将始终返回匹配项,而不管大小写如何:

<code>context.Thingies.First(t => t.Name == "ThingamaBob");</code>

服务器端解决方案

要在LINQ to Entities中实现大小写敏感比较,必须修改相关列的数据库排序规则。例如,以下SQL语句将“Thingies”表中“Name”列的排序规则更改为大小写敏感:

<code>ALTER TABLE Thingies ALTER COLUMN Name VARCHAR(25) COLLATE Latin1_General_CS_AS;</code>

客户端解决方案

虽然不是理想的方案,但存在一种客户端变通方法,它同时利用LINQ to Entities和LINQ to Objects:

<code>var result = context.Thingies.Where(t => t.Name == "ThingamaBob")
                   .AsEnumerable()
                   .First(t => t.Name == "ThingamaBob");</code>

在这种方法中,AsEnumerable() 将查询转换为内存中枚举,允许您使用 Where() 执行二次大小写敏感比较。但是,此变通方法会向数据库引入额外的查询。

以上是如何在 LINQ to Entities 中执行区分大小写的比较?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn