我想知道是否有一个函数可以正确转义过滤器表达式的字符串文字。例如。:
DataTable.Select(String.Format("[name] = '{0}'", MyName))
如果 MyName 包含 ' 或许多其他关键字符,则会生成异常。这微软文档 http://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression.aspx表明这些字符应该被正确转义,但是对于如何做到这一点存在一些混乱。
我已尝试将 ' 替换为 ' 以及 ['],如文档中所示,但是查询仍然失败。
通过将单引号 ' 加倍为 '' 来转义它。通过用 [] 换行来转义 * % [ ] 字符。
例如
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) + "'");
}
谢谢例子在这里 http://www.csharp-examples.net/dataview-rowfilter/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)