DataView Rowfilter - Escape单引号包含在单引号内

时间:2014-07-01 12:02:57

标签: c# datatable dataview rowfilter

在我的应用程序中,用户可以手动构建rowfiler。这方面的一个例子是

(Message LIKE '%'[Search]'%') OR (Message LIKE '%'[Search2]'%')

我怎么逃避这个?目前我使用下面的函数来转义括号和任何斜杠,但我需要在整个过滤器字符串中转义单引号。

public static string CheckValue(string value) { StringBuilder sBuilder = new StringBuilder();

    string pattern = @"([-\]\[<>\?\*\\\""/\|\~\(\)\#/=><+\%&\^\'])";

    Regex expression = new Regex(pattern);

    if (expression.IsMatch(value))
    {
        foreach (char c in value)
        {
            switch(c){
                case '\\':
                     sBuilder.Append("\\");
                    break;
                case '[':
                    sBuilder.Append(@"[[]");
                    break;
                case ']':
                    sBuilder.Append(@"[]]");
                    break;
                default: 
                    sBuilder.Append(c);
                    break;
            }
        }
    }
    return sBuilder.ToString();
}

1 个答案:

答案 0 :(得分:0)

逃避单引号

sBuilder.Append(@"\'");