我有一个搜索数据库的方法。部分搜索允许用户使用引号通过EXACT字符串进行搜索。有一个我遇到麻烦的特殊字符串;它被称为String "xyz"
。请注意xyz周围的引号。如果用户在整个字符串周围放置引号,使其看起来像"String "xyz""
,则不会返回数据库行。当用户只搜索String "xyz"
时,它会正确返回。
以下是有问题的代码部分:
bool isExactSearchString = false;
if (searchString.StartsWith("\"") && searchString.EndsWith("\""))
{
// remove first and last quotes
searchString = searchString.Remove(0, 1);
searchString = searchString.Remove(searchString.Length - 1, 1);
isExactSearchString = true;
}
var result = from d in repository.GetAllTheTableRows()
where (isExactSearchString ? d.Column == searchString : d.Column.Contains(searchString))
select d.Driver;
因此,当字符串中有引号时,当搜索字符串被引号括起来时,result
不会返回结果,但如果字符串周围的引号不包含引号,则会返回结果。这对我来说似乎很奇怪。有谁知道这是为什么?
答案 0 :(得分:-1)
if (searchString.StartsWith("\"") && searchString.EndsWith("\""))
{
// remove first and last quotes
searchString = searchString.Remove(0, 1);
searchString = searchString.Remove(searchString.Length - 1, 1);
//
// Replace all occurrences of " in searchString with \"
//
isExactSearchString = true;
}