我正在从数据表中读取一行并尝试插入数据库。在行中,某些单元格/列不包含值。所以,我试图初步检查该行是否包含值,然后插入数据库。这是我的代码,
string barcode = null;
string itemName = null;
double cost = 0;
double price = 0;
double Stock = 0;
string dept = null;
double tax = 0;
barcode = Convert.ToString(dr[0]);
if (dr[1] != string.Empty || dr[1] != null)
itemName = Convert.ToString(dr[1]);
if (dr[2] != string.Empty || dr[2] != null)
cost = Convert.ToDouble(dr[2]);
if (dr[3] != string.Empty || dr[3] != null)
price = Convert.ToDouble(dr[3]);
Stock = Convert.ToDouble(dr[4]);
if (dr[5] != string.Empty || dr[5] != null)
dept = Convert.ToString(dr[5]);
if (dr[6] != string.Empty || dr[6] != null)
tax = Convert.ToDouble(dr[6]);
但是,我收到了一个错误:
可能的非预期参考比较以获得值比较。
如何更正此问题?
答案 0 :(得分:3)
首先,发布您的错误。
其次,String.IsNullOrEmpty()
非常 win 。
答案 1 :(得分:1)
if (dr[1] != string.Empty || dr[1] != null)
将始终返回true
,即使字符串为空或为空。这是因为某些东西不能同时是string.Empty和null!您应该使用&&
代替||
。
答案 2 :(得分:0)
if (dr[1] != string.Empty || dr[1] != null)
您收到此错误是因为dr[1]
等返回一个对象而不是字符串 - 您必须将其强制转换为字符串或调用ToString()
进行正确的字符串比较。另外(参见@ antisanity的回答)你可能只想要
if (!string.IsNullOrEmpty( dr[1].ToString()))