gpt4 book ai didi

c# - Entity Framework 中的字符串比较异常 FirstOrDefault

转载 作者:太空狗 更新时间:2023-10-29 22:30:20 24 4
gpt4 key购买 nike

我正在使用 Entity Framework 查询表。第一段代码是我写的,第二段是 ReSharper 建议我重构的。如果键不存在,第一个会优雅地返回 null,但第二个会抛出异常。

这是尝试对表中的 0-1 条记录(所有列都标记为 NOT NULL)

有效的代码:

context.brandlink.FirstOrDefault(x => x.ManufacturerKey.ToLower() == manufacturerKey.ToLower());

和不起作用的代码:

context.brandlink.FirstOrDefault(x => String.Equals(x.ManufacturerKey, manufacturerKey, StringComparison.InvariantCultureIgnoreCase));

异常抛出:

Incorrect number of arguments supplied for call to method 'Boolean Equals(System.String, System.String, System.StringComparison)'

所以我的问题是:这两个表达式有什么区别?

最佳答案

So my question is: what is the difference between the two expressions?

区别在于后者使用的是CLR String.Equals Method (String, String, StringComparison)根据 CLR Method to Canonical Function Mapping 不受 EF 支持而前者中使用的所有方法(string.ToLower 和字符串相等运算符)均受支持。

通常,您无法从代码中控制 EF 查询的字符串比较,因为它们由数据库控制。

关于c# - Entity Framework 中的字符串比较异常 FirstOrDefault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35950018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com