实体框架中的通配符搜索

时间:2016-01-19 12:02:55

标签: sql-server entity-framework

我有一个名为SearchData的表,其中包含'title'和'description'列。

表名:SearchData

列:ID TITLE URL DESCRIPTION

用户搜索字符串,例如“技术协助”。

查询应通过搜索带有“技术”和“帮助”字样的标题和说明来返回所有行。

例如,如果描述中包含“我们提供技术和专业帮助”的文本,则应选择该行。

您能否在实体框架中建议最好的方法?我无法进行通配符搜索

TIA

1 个答案:

答案 0 :(得分:0)

如果你正在寻找包含所有单词的记录,你可以连接Where子句(如果你需要或者有点棘手)。

var myQuery = context.SearchData;
foreach (string word in words)
    myQuery = myQuery.Where(s => s.URL.Contains(word) || s.DESCRIPTION.Contains(word));

var results = myQuery.ToList();

修改

如果您需要搜索网址中的所有字词 说明中的所有字词,您可以使用此

var myQuery1 = context.SearchData;
foreach (string word in words)
    myQuery1 = myQuery1.Where(s => s.URL.Contains(word));

var myQuery2 = context.SearchData;
foreach (string word in words)
    myQuery2 = myQuery2.Where(s => s.DESCRIPTION.Contains(word));

var results = myQuery1.Union(myQuery2).ToList();