プロジェクト内の既存のコードをlinq呼び出しに置き換えて、linqを学習しようとしています。このメソッドでは、行のリストで条件を確認し、条件がtrueの場合は、その要素を行からprocessedLinesに移動します。
データ構造は単なるリストです。
List<LineSegment2> lines;
List<LineSegment2> processedLines;
元のコードは次のとおりです。
for (int i = lines.Count - 1; i >= 0; i--)
{
if (lines[i].P2.x < sweepPosition)
{
processedLines.Add(lines[i]);
lines.RemoveAt(i);
}
}
私のlinqコードは次のとおりです。
var toMove = lines.FindAll(x => x.P2.x < sweepPosition);
toMove.ForEach(x =>
{
processedLines.Add(x);
lines.Remove(x);
});
私の質問は次のとおりです。このlinqコードは、一時リスト'toMove'を作成するためにより多くのメモリを使用しているため、効率が低下しますか。一時リストを必要とせずにlinqクエリを作成する方法はありますか、それとも元のコードの方が常に効率的ですか?