我有以下代码:
//myDataTable has the following collumns: UserName, Birthday and email.
string name = "eric!";
string expression = "UserName = " + name;
DataRow[] result = myDataTable.Select(expression);
我想选择名为“eric!”的所有行 “!”给我以下错误:
无法解释令牌“!”。
如何选择包含此类令牌的所有行? (我真的需要表达式中的“!”,因为我从.sql文件中提取userNames)
答案 0 :(得分:5)
您应该在name
之间使用''
。等;
string name = "'eric!'";
如果没有单引号,您的DataTable.Select
方法会认为!
是运算符,并且DataColumn.Expression
property中不允许它作为有效运算符。
来自文档;
用户定义的值
用户定义的值可以在要与之比较的表达式中使用 列值。 字符串值应包含在单个值中 引号。
答案 1 :(得分:2)
您的值
附近缺少引号(' ')
string name = "eric!";
string expression = "UserName = '" + name+'";
DataRow[] result = myDataTable.Select(expression);
当您编写没有引号且使用!
的过滤器运算符时,它会将!
视为非运算符,这就是它给出错误的原因。