Datatable.Compute返回值异常:空购物车DataTable判断失效问题
解决购物车DataTable空判断失效的问题
问题根源
你遇到的判断不生效,是因为当DataTable没有数据行时,Compute("SUM(Amount)", "")返回的是DBNull.Value,而非C#里的null,所以直接用== null肯定匹配不上。
几种可行的解决方案
方案1:直接判断行数(最简洁靠谱)
购物车空本质就是没有数据行,直接判断行数比计算求和更直接:
if (dtCart.Rows.Count == 0) { MessageBox.Show("No item in the cart!"); return; }
方案2:正确判断Compute的返回值
如果一定要通过求和结果判断,得先检查是否为DBNull.Value,再转换判断:
var sumResult = dtCart.Compute("SUM(Amount)", ""); if (sumResult == DBNull.Value || Convert.ToInt32(sumResult) == 0) { MessageBox.Show("No item in the cart!"); return; }
额外提醒
你代码里一开始定义的是static DataTable dtItem = new DataTable();,但后续操作的是dtCart,这大概率是笔误,记得修正变量名,避免不必要的错误。
内容的提问来源于stack exchange,提问作者Ryan OEI
相关产品推荐
相关产品推荐

