使用 C#,我遇到异常:
System.Data.EvaluateException: Cannot perform '=' operation on System.String and System.Int32.
我已经追溯到这段代码:
foreach (DataRow rows in dt.Rows){
...etc
string filter = string.Format("CUST_ID = " + rows[0]);
DataRow[] row = dt.Select(filter);
在foreach
之后,我转到一个bool,它使用linq来查找另一个数据表中是否存在DT中具有相同CUST_ID
的记录。如果为 false,则进入字符串过滤器。这里,我获取第二个数据表中不存在的所有记录,并使用 SqlBulkCopy 将它们全部放入数据库中。
有趣的是,仅仅一手的唱片是行不通的。其中大约有 7000 个,大约有 50 个会导致此异常。我看不出记录之间有什么区别。所以,我不确定我错过了什么。
编辑:
其中一条记录的 CUST_ID
= 998947 会引发异常。
我将CUST_ID
更改为987654,没有出现异常。
最佳答案
您应该用撇号将您的输入括起来。另外,当使用 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 转换为字符串并将其与您的值进行比较,但这不是一个很好的解决方案。
关于C# 错误 : System. Data.EvaluateException : Cannot perform '=' operation on System. 字符串和 System.Int32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27556864/