C# 如何将数据库项强制转换为字符串
如果txtbox的值与我的datatable相同,但我有一个错误,我想搜索一行。。它说,C# 如何将数据库项强制转换为字符串,c#,database,C#,Database,如果txtbox的值与我的datatable相同,但我有一个错误,我想搜索一行。。它说,可能的非预期参考比较;要进行值比较,请将左侧强制转换为字符串。我只使用了.ToString()和转换.ToString(),但仍然存在该错误。您的.ToString()正在将行值转换为字符串,因此您不必在左侧使用(字符串) 例如,if(行[“ProductID”].ToString()==txtBarcode.Text) 就我个人而言,除了int、chars以及这个实例是否就是那个实例之外,我不会使用==运算
可能的非预期参考比较;要进行值比较,请将左侧强制转换为字符串
。我只使用了.ToString()
和转换.ToString()
,但仍然存在该错误。您的.ToString()
正在将行值转换为字符串,因此您不必在左侧使用(字符串)
例如,if(行[“ProductID”].ToString()==txtBarcode.Text)
就我个人而言,除了int、chars以及这个实例是否就是那个实例之外,我不会使用==运算符
比较字符串的更好方法是使用
string.Equals(string)
string.contains(string)
或string.indexOf(string)
您需要执行上述操作之一。执行强制转换(string)行[“ProductId”]
或转换.ToString(行[“ProductId”])
以将值转换为字符串。但是使用(string)行[“ProductId”]
进行强制转换可能会抛出InvalidCastException
。因此,可能ToString()
会更好。注意:如果要与TextBox
值进行比较,则最好在比较之前trim
值,使用trim()
方法删除空白
解决方案1:如果要查找excat匹配项,则需要使用Equals()
方法
if((string)row["ProductID"].ToString() == txtBarcode.Text)
解决方案2:如果要查找字符串的部分,可以使用string.Contains()
方法,如下所示:
if(row["ProductID"].ToString().Equals(txtBarcode.Text.Trim())
{
/* do something*/
}
删除显式强制转换
(string)
如果您在他的情况下使用ToString
,string.Equals将是一个更好的选择。string.Contains(string)
和string.IndexOf(string)
显然是错误的建议,因为它们在“Foo Bar.IndexOf”(“Foo”)的情况下返回积极结果代码>。最好像@Scott建议的那样使用String.Equals
。@Oybek,我确实提到了比较字符串的常规选项。已经添加了字符串。但是等于。
if(row["ProductID"].ToString().Contains(txtBarcode.Text.Trim())
{
/* do something*/
}