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

使用DataTable.Compute时遇'System.Data.NameNode非聚合'错误求助

问题解决:DataTable.Compute 抛出“Expression 'System.Data.NameNode' is not an aggregate”异常

问题根源

你的代码存在两个关键问题:

  1. 未添加数据行:仅创建了DataTable的列结构,但未向表中添加任何数据行。Compute执行非聚合表达式(如Column * 2)时,必须有至少一行匹配过滤条件才能完成计算,无匹配行时会触发该异常。
  2. 语法错误:string filter = "Column = 1"行末尾缺少分号,会导致编译失败。

修复后的代码

string formula = "(Column * 2)";
DataTable dt = new DataTable();
// 建议指定列数据类型,避免隐式类型转换问题
dt.Columns.Add("Column", typeof(int));

// 添加匹配过滤条件的数据行
dt.Rows.Add(1);

string filter = "Column = 1"; // 补充分号
var temp = dt.Compute(formula, filter);
Console.WriteLine(temp); // 输出:2

额外说明

  • 若需处理过滤条件无匹配行的场景,可改用聚合表达式兜底,比如SUM(Column * 2),此时即使无匹配行也会返回0,不会抛出异常:
    var temp = dt.Compute("SUM(Column * 2)", filter);
    
  • 动态替换过滤值时(比如把1换成3),只需修改添加的行值和过滤条件,计算结果会自动对应为6。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:35:41