首先,我为我将要做的释义道歉,我现在无法访问我的代码并且在我的手机上,但是想要发布这个,以便当我稍后访问时,我希望有一个答案。如果我不这样做,我显然会用它的实际行动更新问题。
我的问题的相关细节: 我将字符串变量传递给方法
使用变量作为数据视图的过滤器值的方法内部
我过滤的数据视图列是varchar
我收到一条关于无法使用int32和string
执行=操作的错误因此,据我所知varchar是字符串,我的变量作为字符串传递,所以也必须是一个。
我肯定得到了过滤的语法和用法,因为我已经在很多其他地方使用它而没有任何问题,并对此进行了广泛的检查。
使用所有语句时是否存在一些奇怪的行为,并且视图列值是“仅数字”varchar还是变量是“仅数字”?看起来很奇怪,这可能会产生影响....一个字符串是一个字符串对吗?
我尝试在列上使用convert SQL命令并对变量使用.tostring()。这不起作用,即使它确实如此,我仍然想要解释为什么2个字符串表现得像一个是int。
粗略的用法虽然语法在这里可能是错误的,因为它来自内存(所以如果它假设它是正确的......见上文)
MyDataView.filter = "MyColumnnName = " + MyVariable;
从我的研究到目前为止,有些人建议把“... + MyVariable +”“;”我试过这个并得到同样的错误。
非常感谢!
答案 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方法(或您自己的方法),因此更易于维护并且功能更强大。