情報が少ないんで、いろいろ仮定で話します。
var DataAList = new List<DataA>();
というListがあるとき、
DataAList = from x in DataAList orderby x.FieldA select x;
というような処理をした場合の話かな?
まず、これは試してみればすぐ分かるけど、
そのままではコンパイルエラー。
なぜなら、LINQ の戻り値の型は、IOrderedEnumerable で
そのままでは、List に代入できないから。
DataAList =
(from x in DataAList orderby x.FieldA select x).ToList();
でコンパイル通るけど、
ToList()すると、Listデータの箱を作りにいくので、
その分、メモリロスとタイムロスが発生。
DataAがクラスなら、Listデータの箱は参照アドレスを入れる箱なので
たいしたことないですが、大きな構造体だったりすると、結構なロス
になります。
ソート結果で、ループ処理を回したいだけなら、
IOrderedEnumerable のまま持ち回れば、余計なロスは発生しません。
|