LINQ to Entities:实现区分大小写的比较
LINQ to Entities 查询通常继承 SQL Server 不区分大小写的特性。本指南探讨了在 LINQ to Entities 查询中强制执行区分大小写比较的方法。
了解不区分大小写的行为
LINQ to Entities 将查询转换为 SQL。 SQL Server 的默认排序规则不区分大小写,这意味着“Name == 'ThingamaBob'”被视为不区分大小写的匹配。
数据库级(服务器端)解决方案
最有效的方法是将数据库列的排序规则修改为区分大小写。 使用这样的 SQL 语句:
<code class="language-sql">ALTER TABLE Thingies ALTER COLUMN Name VARCHAR(25) COLLATE Latin1_General_CS_AS</code>
此更改可确保 SQL 和 LINQ to Entities 查询中区分大小写的比较。
应用程序级(客户端)解决方法
如果数据库修改不切实际,可以实施客户端解决方案,尽管它的性能较差:
<code class="language-csharp">Thingies.Where(t => t.Name == "ThingamaBob") .AsEnumerable() .First(t => t.Name == "ThingamaBob");</code>
此方法将数据检索到客户端,在内存中执行区分大小写的比较。
重要注意事项
ObjectQuery.ToTraceString()
检查生成的 SQL 并验证所使用的排序规则。以上是如何在 LINQ to Entities 中执行区分大小写的比较?的详细内容。更多信息请关注PHP中文网其他相关文章!