私はC#で把握しようとしている専門的なクエリを持っています。GroupBy()後のLINQの配列インデックスによる要素の平均化
私はクラスを持っている:
class TimeValues
{
DateTime When;
ImmutableArray<float> Values;
}
これは、特定の時間におけるセンサの数の報告を表します。私がImmutableArray<TimeValues> SomeArray
で使用しているのは、しばしば2番目のレポートに続く一連のレポートです。
私が解決しようとしている問題は、30秒間隔でグループ化し、各センサーのレポートを個別に平均化する方法です。
私は2つのレポート持っているのであれば、たとえば、:
s1 s2 s3
1:20 10 20 30
1:21 30 50 70
を、我々はT1、T2は互いに30秒以内であることを前提とし、私は操作がになりたい:
s1 s2 s3
1:00 avg(10,30) avg(20,50) avg(30,70)
私のような何かを開始している:それは私はかなりのouを理解することはできません最後の行である
SomeArray.GroupBy(k => k.When.Second >= 30
? k.When.AddSeconds(-k.When.Second + 30)
: k.When.AddSeconds(-k.When.Second), k => k.Values)
.Select(group => new TimeValues(group.Key, ...))
t。ストレスを与えなければならない1つの点は、平均化される値の順序は、報告するセンサと一致しなければならないので、維持されなければならないということである。これはLINQでgroup byを使用して初めてのことですが、おそらくより複雑なものの1つです。
https://stackoverflow.com/questions/24373866/average-int-array-elements-with-a-groupby –