たとえば、各プレーヤーがクリケットの名簿で移動した距離を追跡しているとします。次のオブジェクトがあるかもしれません
- トリップ (IList レグ)
- レッグ (距離、期間、プレイヤー、およびトリップに属する)
- 選手(所属チーム)
- チーム
Reactive Extensions を使用してこのデータを集計したいと思います。これが私の最初の試みです:
var trips = new List<Trip>();
Observable.Return( trips )
.SelectMany( trips => trips )
.SelectMany( trip => trip.legs )
.GroupBy( leg => leg.player.team )
.Select( teamLegs => {
var teamSummary = new {
team = teamLegs.key,
distance = 0M,
duration = 0M
}
teamLegs.Sum( x => x.distance ).Subscribe( x => { teamSummary.distance = x; } )
teamLegs.Sum( x => x.duration ).Subscribe( x => { teamSummary.duration = x; } )
return teamSummary;
})
.Select(teamSummary => {
// If I try to do something with teamSummary.distance or duration - the above
// sum is yet to be completed
})
// ToList will make the above sums work, but only if there's only 1 Select statement above
.ToList()
.Subscribe(teamSummaries => {
});
2 番目の Select() ステートメントの前に合計が完了していることを確認するにはどうすればよいですか?