无法执行int32和string之间的操作。数据流过滤器

时间:2015-01-28 08:57:11

标签: c# sql dataview

首先,我为我将要做的释义道歉,我现在无法访问我的代码并且在我的手机上,但是想要发布这个,以便当我稍后访问时,我希望有一个答案。如果我不这样做,我显然会用它的实际行动更新问题。

我的问题的相关细节: 我将字符串变量传递给方法

使用变量作为数据视图的过滤器值的方法内部

我过滤的数据视图列是varchar

我收到一条关于无法使用int32和string

执行=操作的错误

因此,据我所知varchar是字符串,我的变量作为字符串传递,所以也必须是一个。

我肯定得到了过滤的语法和用法,因为我已经在很多其他地方使用它而没有任何问题,并对此进行了广泛的检查。

使用所有语句时是否存在一些奇怪的行为,并且视图列值是“仅数字”varchar还是变量是“仅数字”?看起来很奇怪,这可能会产生影响....一个字符串是一个字符串对吗?

我尝试在列上使用convert SQL命令并对变量使用.tostring()。这不起作用,即使它确实如此,我仍然想要解释为什么2个字符串表现得像一个是int。

粗略的用法虽然语法在这里可能是错误的,因为它来自内存(所以如果它假设它是正确的......见上文)

MyDataView.filter = "MyColumnnName = " + MyVariable; 

从我的研究到目前为止,有些人建议把“... + MyVariable +”“;”我试过这个并得到同样的错误。

非常感谢!

1 个答案:

答案 0 :(得分:0)

String值必须用单引号' '括起来。所以喜欢:

MyDataView.filter = "MyColumnnName = '" + MyVariable + "'";

如果它不是字符串列,您可以省略它们:

MyDataView.filter = "MyColumnnName = " + MyVariable;

但我仍然使用Linq-To-DataTable:

DataTable filtered = dataTable.AsEnumerable()
    .Where(row => row.Field<string>("MyColumnnName ") == MyVariable)
    .CopyToDataTable();

由于您可以使用所有.NET方法(或您自己的方法),因此更易于维护并且功能更强大。