's'运算符后缺少操作数

时间:2010-07-09 08:00:31

标签: c#

我有一个数据表,我想用公司名称过滤此表。但它给出了这个错误:“语法错误在's'操作符之后缺少opperand”。

我的代码就像这样。

DataRow[] rowList = resultDt.Select(string.Format(" [{0}] = '{1}'", resultDt.Columns["Company"], "Dyn's"));

可能是什么问题?

5 个答案:

答案 0 :(得分:7)

这是名字中的撇号,你需要逃脱它:

DataRow[] rowList = resultDt.Select(string.Format(" [{0}] = '{1}'", resultDt.Columns["Company"], "Dyn\'s"))

问题是它被替换为{1},因此生成的字符串看起来像'Dyn's',转义它会让你到'Dyn\'s'这应该没问题。

答案 1 :(得分:5)

问题是“Dyn's”。你可以使用\'代替'发生问题

答案 2 :(得分:4)

Dyn's

你需要逃避撇号:

Dyn\'s

答案 3 :(得分:2)

尝试转义':

"Dyn\'s"

答案 4 :(得分:1)

您是否可以使用LINQ to DataTable?我一直认为DataTable.Select()是一种易犯错误的做事方式,正是出于这种原因。

通过DataTableExtensions.AsEnumerable()方法(或更简单地使用强类型数据集,IIRC)使用LINQ to Objects(有效)查询是更好的IMO。诚然,您不会从DataTable执行任何内存索引中获益,但我怀疑在大多数情况下这些索引都是无关紧要的。