c#datatable使用compute来计算一系列行的平均值

兰斯

我试图在数据表上使用 .Compute ,它只计算一组行的平均值。我浏览了 Microsoft 文档并搜索了一段时间,但找不到过滤器对数据表结构起作用的位置。寻找类似的东西: -

string connectStatement = "SELECT Price FROM PData WHERE Code = '" + this.ItemCode + "' ORDER BY TradeDate DESC OFFSET 0 ROWS FETCH NEXT 300 ROWS ONLY";
DataTable itemsDT = ConnectionManager.GetTable(connectStatement);
Records20 = (decimal)itemsDT.Compute("Avg(Price)", "Rows > 16 AND Rows < 23");

它在使用空过滤器时有效,但会计算所有数据。

如果这是不可能的,我正在考虑使用循环和求和来计算之后的平均值。

编辑:我正在查看某个时间点的数据样本,并对其两侧的范围进行平均(例如,第 20 个间隔和第 17 - 22 行)

错误消息是 $exception {"Cannot find column [Rows]."} - System.Data.EvaluateException

示例数据(仅限前 30 行):

价格6464.100,6426.800,6406.100,6349.300,6329.600,6295.500,6247.900,6189.100,6206.100,6214.600,6231.000,6130.200,6115.700,6129.500,6097.300,6159.600,6149.700,6118.400,6156.700,6118.800,6054.700,6014.700,6198.000,6242.800,6272.900 , 6250.700, 6213.500, 6207.000, 6184.200, 6333.200

博日达尔·斯托内夫

你将无法以你接近它的方式做到这一点。

要使用该.Compute方法,您需要在过滤器表达式中传递一个列名 - 因为它是一个普通WHERE子句。在 T-SQL 级别,您可以利用该ROW_NUMBER函数枚举新列中返回的行 - 例如索引- 然后在该枚举列上应用过滤器。例如,

string connectStatement = "SELECT ROW_NUMBER() OVER(ORDER BY TradeDate DESC) AS Index, Price FROM PData WHERE Code = '" + this.ItemCode + "' OFFSET 0 ROWS FETCH NEXT 300 ROWS ONLY";
DataTable itemsDT = ConnectionManager.GetTable(connectStatement);
Records20 = (decimal)itemsDT.Compute("Avg(Price)", "Index > 16 AND Index < 23");

另一种方法是LINQ在 T-SQL 查询的帮助下完成此操作并保持原样:

string connect statement = "SELECT Price FROM PData WHERE Code = '" + this.ItemCode + "' ORDER BY TradeDate DESC OFFSET 0 ROWS FETCH NEXT 300 ROWS ONLY";
Records20 = itemsDT.AsEnumerable() // this will yeald a IEnumerable<DataRow>
    .Skip(16)
    .Take(7)
    .Select(dr => (decimal)dr["Price"])
    .Average()
;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫:使用数据框和一系列数据按行计算加权平均值

循环一系列值并返回平均值

如何计算数据框中一系列序列的平均值?

如何从一系列跨年的日期计算滚动平均值?

计算PHP中一系列XML元素的平均值

如何在一系列特定的恒定宽度列范围内计算平均值?

使用Excel中的一系列日期输入来计算平均利率

C程序根据给定的时间戳找到一系列值的窗口平均值

闪亮的 plotOutput(brush=...) 无法更新一系列数字和崩溃的平均值

如何从输入中计算出一系列计算的平均值和最大值/最小值?

使用一系列输入来扩展行

VB.NET从sortedlist(sortedlist.average)的一系列值中获取平均值

从一系列图像 URL 计算平均尺寸

如何使用 COMPUTE 在 SPSS 中创建和计算一系列值?

使用 LINQ 计算一系列 DateTime 对象之间的平均差异

DataFrame Pandas:创建一个新列,其中包含一系列中每个可能的 3 组的平均值

使用 bin 中的第一行(而不是平均值)来计算百分比增益

使用字典来键入一系列值

使用 Numpy 计算一系列元素

计算一系列线段的长度

如何使用Spark处理一系列HBase行?

使用掩码数组的一行计算整个数组行的平均值

计算列的平均值,第一行除外

如何计算一系列日期之间的平均天数?

您可以计算一系列图形对象的平均传递率吗?

如何仅按ID来计算一系列列中的新错误?

使用滞后计算SQL中各行之间的平均值,并忽略第一行

使用dplyr中的条件计算行平均值

创建一个循环来计算不同滚动平均值长度的矢量的滚动平均值