You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于DataTable列表达式实现数量乘价格计算的技术咨询

在DataTable中通过列表达式实现数量×价格的计算列

嘿,我来帮你搞定这个需求!你已经创建了Price列,接下来只需要补全Quantity列,再添加一个带表达式的计算列就能实现总价的自动计算了。下面是完整的实现代码和细节说明:

完整代码示例

// 创建DataTable
DataTable dtList = new DataTable("dtList");

// 添加Price列(你已写的部分补全)
DataColumn dcPrice = new DataColumn();
dcPrice.DataType = typeof(decimal);
dcPrice.ColumnName = "Price";
dtList.Columns.Add(dcPrice);

// 添加Quantity列(你代码中未完成的部分)
DataColumn dcQuantity = new DataColumn();
dcQuantity.DataType = typeof(decimal);
dcQuantity.ColumnName = "Quantity";
dtList.Columns.Add(dcQuantity);

// 添加计算列Total,表达式为Price * Quantity
DataColumn dcTotal = new DataColumn();
dcTotal.DataType = typeof(decimal);
dcTotal.ColumnName = "Total";
// 核心:设置列表达式实现自动计算
dcTotal.Expression = "Price * Quantity";
dtList.Columns.Add(dcTotal);

// 测试:添加几行数据看看效果
dtList.Rows.Add(19.99, 2);   // Total会自动计算为39.98
dtList.Rows.Add(9.99, 5);    // Total自动计算为49.95
dtList.Rows.Add(DBNull.Value, 3); // 如果有空值,Total会返回DBNull

关键细节说明

  • 列表达式的用法:DataColumn.Expression属性支持简单算术运算(+、-、*、/),直接用列名即可引用对应列的值,无需手动遍历行计算,DataTable会自动帮你维护计算结果。
  • 空值处理:如果Price或Quantity可能为空,你可以修改表达式来处理空值,比如默认返回0:
    dcTotal.Expression = "IIF(Price IS NULL OR Quantity IS NULL, 0, Price * Quantity)";
    
  • 类型一致性:确保Price、Quantity和Total列的DataType都是decimal,避免因类型不匹配导致的计算错误。

这样一来,当你往DataTable里添加或修改Price/Quantity的值时,Total列会自动更新计算结果,完美满足你的需求!

内容的提问来源于stack exchange,提问作者lex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:06:29