我想知道是否有一个函数来正确地转义过滤器表达式的字符串文字.例如:
DataTable.Select(String.Format("[name] = '{0}'", MyName))
如果MyName包含'或许多其他关键字符,则会生成异常.在微软的文档表明,这些charaters应正确逃脱,但没有对如何,这是做了一些混乱.
我已经尝试用文档中的指示替换'with \'和['],但查询仍然失败.
非常感谢
通过将单引号"加倍"来逃避单引号.通过包装在[]中转义*%[]个字符.例如
private string EscapeLikeValue(string value) { StringBuilder sb = new StringBuilder(value.Length); for (int i = 0; i < value.Length; i++) { char c = value[i]; switch (c) { case ']': case '[': case '%': case '*': sb.Append("[").Append(c).Append("]"); break; case '\'': sb.Append("''"); break; default: sb.Append(c); break; } } return sb.ToString(); } public DataRow[] SearchTheDataTable(string searchText) { return myDataTable.Select("someColumn LIKE '" + EscapeLikeValue(searchText) + "'"); }
感谢这里的例子
如果我将'with two single'替换为查询有效.