DataTable表达式无法解释标记'!'

时间:2014-02-08 11:53:30

标签: c# datatable syntax-error expression token

我有以下代码:

//myDataTable has the following collumns: UserName, Birthday and email.
string name = "eric!";
string expression = "UserName = " + name;
DataRow[] result = myDataTable.Select(expression);

我想选择名为“eric!”的所有行 “!”给我以下错误:

  

无法解释令牌“!”。

如何选择包含此类令牌的所有行? (我真的需要表达式中的“!”,因为我从.sql文件中提取userNames)

2 个答案:

答案 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);

当您编写没有引号且使用!的过滤器运算符时,它会将!视为非运算符,这就是它给出错误的原因。