在 LINQ to Entities 中实现区分大小写的比较
LINQ to Entities 查询(如 Thingies.First(t => t.Name == "ThingamaBob")
)默认情况下可能不区分大小写。 这是由于 LINQ to Entities 将 Lambda 表达式转换为 SQL,其中区分大小写取决于 SQL Server 数据库的排序规则设置。
数据库级解决方案:修改排序规则
确保区分大小写比较的最有效方法是将列的排序规则更改为区分大小写的选项。 例如,要使 Name
表中的 Thingies
列区分大小写,请使用以下 SQL 命令:
ALTER TABLE Thingies ALTER COLUMN Name VARCHAR(25) COLLATE Latin1_General_CS_AS
客户端方法:利用 LINQ to Objects
如果修改数据库排序规则不可行,则使用 LINQ to Objects 的客户端解决方案提供了替代方案。这涉及初始数据库查询,然后使用 AsEnumerable()
进行内存中比较。 示例:
Thingies.Where(t => t.Name == "ThingamaBob") .AsEnumerable() .First(t => t.Name == "ThingamaBob");
这会在初始数据库过滤后在内存中执行区分大小写的检查。 请注意,此方法的性能可能低于服务器端排序规则更改。
以上是如何在 LINQ to Entities 中实现区分大小写的比较?的详细内容。更多信息请关注PHP中文网其他相关文章!