【问题标题】:Ignore acutes in LINQ when using "Contains"使用“包含”时忽略 LINQ 中的锐音
【发布时间】:2014-08-03 11:13:05
【问题描述】:

是否可以在纯 LINQ-to-entities 中使用 String 的 Contains() 方法而不考虑锐度?

例子:

table Messages
---------------------------
  MessageId     Body
     1          Hello John how are you
     2          Hi Jóhn sup?
        ...

我想要这个查询:

var messages = db.Messages.Where(p => p.Body.Contains("John"));

不仅第一条消息返回给我,第二条消息也返回给我。

如果这不是正确的方法(包含),那是哪一种?

我正在使用 SQL Server。

另外,这里有一个类似但不同的问题: Ignoring accented letters in string comparison

这是不同的,因为他正在尝试比较两个字符串(“Equals”或“CompareTo”),...而我正在尝试使用“Contains”

【问题讨论】:

  • 你在使用 sql server 吗?
  • 可能duplicate
  • @user1994514 我看到了这个问题并且完全不同......“等于”与“包含”不同
  • @sports 所以你宁愿看这个,它是“linq to entity”友好的:查看字段排序部分:stackoverflow.com/a/8144930/961526
  • @sports 好吧,我宁愿说“以 AI 结尾的排序规则”(不是每个人都使用 SQL_Latin1...),或者如果您还希望不区分大小写,则使用 CI_AI。 (CI = 不区分大小写,AI = 不区分重音)

标签: linq entity-framework linq-to-entities full-text-search string-search


【解决方案1】:

答案在 cmets 中已经有一段时间了。这也是一个答案:

将数据库排序规则更改为以“_AI”结尾的排序规则,使其不区分重音(或“_CI_AI”,使其也不区分大小写)

【讨论】:

    猜你喜欢
    • 2011-07-20
    • 2014-07-03
    • 2010-09-24
    • 2011-11-17
    • 2011-03-20
    • 2018-10-27
    • 2019-01-20
    • 2018-10-05
    • 1970-01-01
    相关资源
    最近更新 更多