【发布时间】:2018-03-09 20:02:05
【问题描述】:
我目前正在针对实体框架将一些 SQL 转换为 C# 代码,并且遇到了关键字搜索查询的问题。
(非常)简化的查询最终看起来像这样:
SELECT * FROM SomeTable
WHERE CONTAINS(Col1, Col2, Col3, '"word"')
根据文档https://docs.microsoft.com/en-us/sql/t-sql/queries/contains-transact-sql,此方法搜索单词或短语的模糊或精确匹配。因此,如果我搜索关键字“word”,我将得到 Col1、Col2 或 Col3 具有“word”实例的结果。
我已经尝试针对实体框架编写一个包含字符串的方法:
Context.Where(i => i.Col1.Contains("word") || i.Col2.Contains("word") || i.Col3.Contains("word"))
但是,这会产生一个通配符,如查询 '%word%' 并返回不相关的结果,例如,我得到了“word”和“swords”的匹配项。
如何获得与 SQL 包含查询相同的结果?
【问题讨论】:
-
所以所有 cols 都需要专门返回 word 而没有别的?
-
有没有可用的equals()方法?
-
所以
keyword返回word和swords?您可能必须使用正则表达式而不是Contains -
抱歉,我使用的措辞可能不清楚该示例。我将更新关键字以使其更加清晰。
-
没有办法,但是可以使用一些(丑陋的)变通方法,例如:entityframework.info/Home/FullTextSearch。
标签: c# sql entity-framework