最佳答案
我正在阅读实体框架核心2.0 https://blogs.msdn.microsoft.com/dotnet/2017/08/14/announcing-entity-framework-core-2-0/的公告
它说他们为执行 SQLLIKE
操作添加了新的 SQL 函数,如 EF.Functions.Like
。
我想知道,那么 EF.Functions.Like
和 string.Contains
/StartsWith
之间的区别是什么?
例如:
var customers = context.Customers.Where(c => c.Name.StartsWith("a")); // Version A
var customers = context.Customers.Where(c => EF.Functions.Like(c.Name, "a%")); // Version B
这两个版本有什么不同?
EF 已经知道如何将 string.Contains
/StartsWith
转换为相应的 SQL 操作,不是吗?
我能想到的唯一原因就是 EF 函数。Like 允许使用更复杂的模式,如 "a%b%"
(尽管这个模式可以写成 StartsWith("a") && Contains("b")
)
这就是原因吗?