gpt4 book ai didi

c# - 是否可以在 C# DataColumn.Expression 的 SUM 中使用 IIF?

转载 作者:行者123 更新时间:2023-11-30 14:35:54 25 4
gpt4 key购买 nike

这是我要评估的表达式:

Sum(IIF(QUALITY<=9.0,1.0,0.0))

问题是

string expr = "Sum(IIF(QUALITY<=9.0,1.0,0.0))";
dataTable.Compute(expr, "")

抛出错误提示

Syntax error in aggregate argument: Expecting a single column argument with possible 'Child' qualifier.


主要的挑战是我无法手动重写表达式,因为它是从 RDL 文件以字符串形式进入我的程序的,所以它最初看起来像

Sum(IIF(Fields!QUALITY.Value<=9.0,1.0,0.0))

我的程序需要自动将其转换为字符串,该字符串在传递给 dataTable.Compute() 时将成为有效表达式。我从 Microsoft 的 Compute 方法文档中确定 C# 不喜欢“字段!”或语法的“.Value”部分,通过删除它们,我可以使用更简单的表达式;例如,这些语句都返回预期值:

dataTable.Compute("Sum(QUALITY)");
dataTable.Compute("Count(QUALITY)");


有可能做我想做的事吗?我觉得我应该只需要在某个地方稍微改变一下语法就可以让它工作,但我一直无法在互联网上找到答案,这让人非常沮丧。

以下是我到目前为止尝试过的一些方法,但都无济于事:

Sum(IIF([QUALITY]<=9.0,1.0,0.0))
Sum(Convert(IIF(QUALITY<=9.0,1.0,0.0), 'System.Double'))
Sum(IIF(Convert(QUALITY, 'System.Double')<=9.0,1.0,0.0))

最佳答案

执行此操作的一种方法可能是将聚合列添加到 DataTable表达式设置为 IIF(QUALITY<=9.0,1.0,0.0) .

dataTable.Columns.Add("AggregateColumn", typeof(double), "IIF(QUALITY<=9.0,1.0,0.0)");

然后对聚合列求和或计数。

关于c# - 是否可以在 C# DataColumn.Expression 的 SUM 中使用 IIF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11352118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com