【问题标题】:How to do a LIKE in Entity Framework CORE (not full .net)如何在 Entity Framework CORE 中进行 LIKE(不是完整的 .net)
【发布时间】:2018-04-26 22:05:21
【问题描述】:

在完整的 .net 框架中有针对 Entity Framework LIKE 的 Q+A:

How to do SQL Like % in Linq?
Like Operator in Entity Framework?

例如:

from c in dc.Organization
where SqlMethods.Like(c.Boss, "%Jeremy%")

这在 EF Core 中不起作用:

名称 SqlMethods 在当前上下文中不存在。

那么如何使用 Entity Framework CORE 进行 LIKE?

【问题讨论】:

  • @Ivan 有相同的答案,但它只有 21 个视图,而这有 27 个 ATM。关闭的糟糕选择。像这样离开的原因:stackoverflow.com/users/5/jon-galloway
  • 坦率地说,我没有看过这样的统计数据。重复只是(并且仍然)重复:)
  • 比您的副本更好,更可索引,请立即反转它。区别在于InStr,因为这是CHARINDEX,重新标记SQL Server
  • @Ivan,来吧,检查我的个人资料,我是捐赠好答案的人
  • 无论如何,你去。干杯。

标签: c# sql-server .net-core entity-framework-core sql-like


【解决方案1】:

LIKE 函数已移至 Core 中的 EF.Functions 下:

from c in dc.Organization
where EF.Functions.Like(c.Boss, "%Jeremy%")

【讨论】:

    【解决方案2】:

    你可以使用Contains代替Like函数

    from c in dc.Organization
    where c.Boss.Contains("Jeremy") 
    

    【讨论】:

    • 不,如果您运行 SQL 分析器来捕获原始 SQL 查询,您将看到 Contains 使用 SQL CHARINDEX 函数。 EF.Functions.Like 在查询中正确映射到 SQL LIKE
    • 但是当有大量数据时,使用 CHARINDEX 它的工作速度会更快
    • 不一样,比如启用全文搜索时。
    • 同样,当搜索词为空时,CHARINDEX 不返回任何内容,而 LIKE 则返回所有内容。
    • 是的!这是真的
    猜你喜欢
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 2020-02-25
    • 1970-01-01
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多