我想知道是否有一个函数来正确地转义过滤器表达式的字符串文字.例如:
DataTable.Select(String.Format("[name] = '{0}'", MyName))
Run Code Online (Sandbox Code Playgroud)
如果MyName包含'或许多其他关键字符,则会生成异常.在微软的文档表明,这些charaters应正确逃脱,但没有对如何,这是做了一些混乱.
我已经尝试用文档中的指示替换'with \'和['],但查询仍然失败.
非常感谢
Ror*_*ory 32
通过将单引号"加倍"来逃避单引号.通过包装在[]中转义*%[]个字符.例如
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) + "'");
}
Run Code Online (Sandbox Code Playgroud)
感谢这里的例子
归档时间: |
|
查看次数: |
28023 次 |
最近记录: |