次のLINQステートメントがあるとします。私は(コード内のコメントを参照してください)私は3番目のselect句にいる間、「r.Portfolio」を使用する方法を見つけるしたいと思います:LINQステートメントのouter select句からオブジェクトにアクセスする
positionsToOptimize
.Select(p => p)
.SelectMany(r => r.Positions)
.Select(pos => new OptimizedPosition() {
CalculationType = TCalculationType.Absolute,
Position = pos.NetPositionAmount,
SecurityID = pos.SecurityID,
Portfolio = r.Portfolio // <- How do I do this? (Portfolio is not in 'pos')
});
基本的に私は次のforeachネストされたループ置き換えるしようとしています:
をvar lst = new List<OptimizedPosition>();
foreach (var r in positionsToOptimize) {
foreach (var pos in r.Positions) {
lst.Add(new OptimizedPosition() {
CalculationType = TCalculationType.Absolute,
Position = pos.NetPositionAmount,
SecurityID = pos.SecurityID,
SystemCode = r.SystemCode
});
}
}
return lst;
なぜ3つの投影を最初に使用していますか?それぞれのオブジェクトを別のものに変えて他のものに変えるのではなく、ただ一つの投影を使用してそれを行うだけで、他のものに変えることができます。 – Servy
@Servy - 分割統治を使って問題を解決しようとしていたので、複数の予測を試みました。時々私はそれがうまくいかないと思う:-) – Denis