这些代码行是什么意思?
foreach (DataRow row in distinctFlatDataTable.Rows)
{
row["Diff_Min"] = (Convert.ToDecimal(row["Mins"] == DBNull.Value ? 0.0 : row["Mins"]) - Convert.ToDecimal(row["MIN"] == DBNull.Value ? 0.0 : row["MIN"]));
row["Diff_Amt"] = (Convert.ToDecimal(row["Amount"] == DBNull.Value ? 0.0 : row["Amount"]) - Convert.ToDecimal(row["AMT"] == DBNull.Value ? 0.0 : row["AMT"]));
row["Diff_Pft"] = (Convert.ToDecimal(row["Profit"] == DBNull.Value ? 0.0 : row["Profit"]) - Convert.ToDecimal(row["PFT"] == DBNull.Value ? 0.0 : row["PFT"]));
}
答案 0 :(得分:0)
从DataRows集合中,每个实例中都选择了一个Datarow row
。该行中代表row["Mins"]
列的Mins
转换为Decimal
。然后与DbNull.Value
进行比较以进行空检查。如果值为null
,则采用0.0表达式Convert.ToDecimal(row["Mins"])
中的原始值。
Convert.ToDecimal(row["MIN"]
&两者的结果都被减去&存储在行[“Diff_Min”]中。
声明2& 3。
希望这能清除你的怀疑。
答案 1 :(得分:0)
对于DataTable中的每一行,它计算两个字段之间的差异,将结果转换为十进制值并将其存储在同一行的另一个字段中。 在第1行中,从字段Mins的内容中减去Min字段,并将结果存储在字段Diff_Min中。
每行代码都做同样的事情,但使用不同的源和目标字段。
?并且:部分:
row["Mins"] == DBNull.Value ? 0.0 : row["Mins"]
正在测试源字段是否包含空值(DBNull.Value),并在这些情况下替换0.0。这样,当其中一个源字段恰好具有空值时,计算不会失败。