我无法理解此代码的确切含​​义

时间:2016-03-25 07:09:45

标签: c#

这些代码行是什么意思?

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"]));
}

2 个答案:

答案 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。这样,当其中一个源字段恰好具有空值时,计算不会失败。