[逻辑鬼才] 实现DataTable.Compute对很多多多列的计算
在DataTable对列的计算中,我们常用到Compute这一方法。
DataTable.Compute(string Expression, string Filter);
当遇到很多列而且表达式相同的情况下,我们可以用数组的方法实现对DataTable列的计算
首先我们先来看一下常规的方法
dt.Compute("avg(columName1)", "");
dt.Compute("avg(columName2)", "");
dt.Compute("avg(columName3)", "");
dt.Compute("avg(columName4)", "");
dt.Compute("avg(columName5)", "");
dt.Compute("avg(columName6)", "");
dt.Compute("avg(columName7)", "");
这样的表达式一样,只有列名不一样,可以用一个for循环来操作
int[] aver = new int[7];
for(int i = 0; i < 7; i++)
{
}
重点来了: 在Expression语法中若要求平均只能通过:”avg(列名)“的方法来实现,若将列名更换为”avg(dt.Columns[i].Capital)“,由于引号内为字符型,那么则无法识别表达式。究其本质,其结构为avg+(列名),且全为string类型 ** **尝试下列操作。
dt.Compute((avg(ExcelTable.Columns[i + 3].Caption)).Tostring(), "");
然而并无卵用,还提示你括号可以删除。
再次究其本质,括号太多可能机器也会傻傻分不清楚,我们可以用+,是的加号。用加号可以连接两个字符串** **代码如下
for (int i = 0; i < 7; i++)
{
aver[i] = (int)dt.Compute("avg" + "(" + dt.Columns[i].Caption.ToString() + ")", "");
}
完美运行。nice 逻辑鬼才
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构