Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#linq根据以前的数据创建与函数相关的新项_C#_Linq - Fatal编程技术网

C#linq根据以前的数据创建与函数相关的新项

C#linq根据以前的数据创建与函数相关的新项,c#,linq,C#,Linq,这里的Vol是两天的标准偏差,例如Symbol=“a”在2016,2,3处的Vol是2016,2,3和2016,2,2关闭的函数。此外,第一天的Vol(例如2016,2,1)默认为Vol=0 预期产出: select new { Symbol, Close, Date, Vol}; 我该怎么办?我怀疑您在这种情况下是否需要分组,如果我了解您的问题,您希望在当前和以前的历史记录之间计算SD 您可以使用Linq扩展方法来实现这一点 decimal OneStdDev = (decimal)(new

这里的
Vol
是两天的标准偏差,例如
Symbol=“a”
2016,2,3
处的
Vol
2016,2,3
2016,2,2
关闭的函数。此外,第一天的
Vol
(例如
2016,2,1
)默认为
Vol=0

预期产出:

select new { Symbol, Close, Date, Vol};

我该怎么办?

我怀疑您在这种情况下是否需要分组,如果我了解您的问题,您希望在当前和以前的历史记录之间计算
SD

您可以使用
Linq
扩展方法来实现这一点

decimal OneStdDev = (decimal)(new DescriptiveStatistics(data.Select(o => (double)o.Close)).StandardDeviation);
输出:

var results = data          
                .Take(1)
                .Select(x=>new {x.Symbol, x.Close, x.Date, Vol = 0.0m})
                .Concat(data.Zip(data.Skip(1), (first,second) => 
                                 new 
                                 {
                                     second.Symbol, 
                                     second.Close, 
                                     second.Date, 
                                     Vol = first.Close + second.Close  // Use whatever logic you want.
                                 }
                        ));

检查此项

当数字非常大时如何写入,假设
SD
的参数为10天
close
之前,前10天
close
默认为0。谢谢你的后续问题,我建议你提出新问题。如果我们在问题中包含的内容超过了所问的内容,可能会将人们与类似问题混淆。
decimal OneStdDev = (decimal)(new DescriptiveStatistics(data.Select(o => (double)o.Close)).StandardDeviation);
var results = data          
                .Take(1)
                .Select(x=>new {x.Symbol, x.Close, x.Date, Vol = 0.0m})
                .Concat(data.Zip(data.Skip(1), (first,second) => 
                                 new 
                                 {
                                     second.Symbol, 
                                     second.Close, 
                                     second.Date, 
                                     Vol = first.Close + second.Close  // Use whatever logic you want.
                                 }
                        ));
Symbol =a, Close=1.0, Date=2/1/2016 12:00:00 AM, Vol = 0.0
Symbol =a, Close=1.2, Date=2/2/2016 12:00:00 AM, Vol = 2.2
Symbol =a, Close=1.3, Date=2/3/2016 12:00:00 AM, Vol = 2.5
Symbol =b, Close=1.2, Date=2/1/2016 12:00:00 AM, Vol = 2.5
Symbol =b, Close=1.2, Date=2/2/2016 12:00:00 AM, Vol = 2.4
Symbol =b, Close=1.3, Date=2/3/2016 12:00:00 AM, Vol = 2.5