我有一个包含超过 50k 行的数据集。我决定取前 50 个值的平均值,然后取后 50 个值的平均值,依此类推(这样我将获得数据集的一半,平均值为 50 个值组)。
这是我的代码:
var Rate = (from dr in ds.Tables[0].AsEnumerable()
select new
{
rate = dr.Field<double>(columnName)
}.rate).ToList();
if (Rate.Count > 50)
{
var avg = Rate.CheckRateValue();
}
这是我的扩展方法的代码:
public static IEnumerable<double> CheckRateValue(this IEnumerable<double> values)
{
int i = 1;
int j = 0;
for (; i < values.Count(); )
{
yield return values.Skip(j * 2).Take(2).Average();
i = i + 2;
j++;
}
}
问题: 它工作正常,但速度很慢。有人对如何加快速度有任何建议吗?