我有一个数据表,我想用公司名称过滤此表。但它给出了这个错误:“语法错误在's'操作符之后缺少opperand”。
我的代码就像这样。
DataRow[] rowList = resultDt.Select(string.Format(" [{0}] = '{1}'", resultDt.Columns["Company"], "Dyn's"));
可能是什么问题?
答案 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
执行任何内存索引中获益,但我怀疑在大多数情况下这些索引都是无关紧要的。