我正在使用SQL Server UDF来允许我在Linq to SQL中使用CONTAINSTABLE。
我正在使用字符串数组和正则表达式将用户的搜索字符串拆分为可识别的单词,然后将字符串数组重新组合成符合CONTAINSTABLE语法的搜索条件字符串。
我想让用户能够用引号括住短语。换句话说,如果用户输入'黄色'蓝绿色“'搜索条件应该是'黄色OR'蓝绿色”'在给定以下代码的情况下,最好的处理方法是什么。
IEnumerable<string> keywords = Regex
.Matches(search, @"(?<match>\w+)|\""(?<match>[\w\s]*)""")
.Cast<Match>()
.Select(m => m.Groups["match"].Value)
.ToList();
string searchCondition = "";
searchCondition = String.Join(" OR ", keywords);
List = from t1 in List
join fts in _dc.udfSearchContent(searchCondition)
on t1.ContentID equals fts.ContentID
select t1;
谢谢!
答案 0 :(得分:0)
.Select(x => @"""" + x + @"""")
可以解决问题。
IEnumerable<string> keywords = Regex
.Matches(search, @"(?<match>\w+)|\""(?<match>[\w\s]*)""")
.Cast<Match>()
.Select(m => m.Groups["match"].Value)
.ToList();
string searchCondition = "";
searchCondition = String.Join(" OR ", keywords.Select(x => @"""" + x + @""""));
List = from t1 in List
join fts in _dc.udfSearchContent(searchCondition)
on t1.ContentID equals fts.ContentID
select t1;