C# 错误 : System. Data.EvaluateException : Cannot perform '=' operation on System. 字符串和 System.Int32

标签 c# datarow

使用 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/

相关文章:

c# - Restsharp反序列化服务器端错误

c# - ComboBox.ItemTemplate 未正确显示选择

用于检查/分配变量的 c# 习语

c# - 如何使用 Datarow 和 DataTable 来填充单选按钮列表?

C#无法向SQL Server数据库中插入数据

c# - 线程问题-产生多个线程的最佳方法

c# - 将数据行从一个数据表插入到特定索引

c# - 无法在 C# 中将行转换为 DataTable

c# - 计算机状态( sleep 、休眠、锁定等)Windows 10

c# - 为什么我的 DataTable 总是返回 "true/false"但从来不返回字符串?