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中文网其他相关文章!