C#错误:System.Data.EvaluateException:无法执行' =' System.String和System.Int32上的操作

时间:2014-12-18 22:31:02

标签: c# datarow

使用C#,我得到了例外:

  

System.Data.EvaluateException:无法执行' =' System.String和System.Int32上的操作。

我已将其追溯到此代码:

foreach (DataRow rows in dt.Rows){

...etc

string filter = string.Format("CUST_ID = " + rows[0]);
DataRow[] row = dt.Select(filter);

foreach之后,我转到使用linq的bool来查找DT中具有相同CUST_ID的记录是否存在于另一个数据表中。如果为false则转到字符串过滤器。在这里,我获取第二个数据表中不存在的所有记录,并使用SqlBulkCopy将它们全部放在数据库中。

有趣的是,只有一手满满的记录才能发挥作用。其中大约有7000个,大约50个将导致此异常。我没有看到记录之间有任何区别。所以,我不确定我错过了什么。

编辑:

其中一条记录有CUST_ID = 998947,会抛出异常。

我将CUST_ID更改为987654,没有例外。

1 个答案:

答案 0 :(得分:3)

您应该用撇号括起输入。此外,使用String.Format时,请提供格式字符串及其参数。不只是字符串,那么String.Format调用是无用的。试试这个:

 string filter = String.Format("CUST_ID = '{0}'", rows[0].ToString());
编辑:对不起,误读了你的问题。如果您的列是整数类型,请不要关心撇号。该异常告诉您正在尝试将字符串与int进行比较。如果你确定,他们是int,只是我的代码审查很少:

 string filter = String.Format("CUST_ID = {0}", rows[0].ToString());

您也可以尝试将CUST_ID转换为字符串并将其与您的值进行比较,但这不是一个很好的解决方案。