0

我正在使用 SQL Server UDF 来允许我在 Linq to SQL 中使用 CONTAINSTABLE。

我使用字符串数组和正则表达式将用户的搜索字符串拆分为可识别的单词,然后将字符串数组重新组合成符合 CONTAINSTABLE 语法的搜索条件字符串。

我想让用户能够将短语括在引号中。换句话说,如果用户输入“黄色“蓝绿色”,则搜索条件应该是“黄色或“蓝绿色””给定以下代码,处理此问题的最佳方法是什么。

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;

谢谢!

4

1 回答 1

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;
于 2012-05-15T15:45:02.550 回答