2012-04-02 9 views
2

私は整数の一般的なリストを持っていて、乱数を含んでいます。 LINQを使用してリストから最後のn個の要素を選択するにはどうすればよいですか?一般リストから下のNを選択してください

リストから最後のn個の要素を取得するには、myList.GetRange(index、count)を使用できます。 LINQでそれを行う方法はありますか?

おかげ

に関して、 バラン

+0

一般的に、パフォーマンスが低下する可能性があるため、タイプに組み込まれている機能の代わりにLinqは使用しません。 LinqはIEnumerableで動作し、リスト全体を横断する必要があります。 GetRangeがより最適かもしれません。 – Maciej

+0

@Maciej LINQは、 'ICollection'と' IList'を操作するときに透過的に最適化されているという印象を受けました。クエリによっては、必ずしもリスト全体を走査しなければならないわけではありません。 –

+0

@Bradley:はい、場合によっては最適化されていますが、常にそうとは限りません。 http://stackoverflow.com/questions/6245172/why-isnt-skip-in-linq-to-objects-optimized – Maciej

答えて

8
var count = myList.Count; 

myList.Skip(count-n) 

更新:

削除冗長テイク。

2

使用してスキップ:

myList.Skip(index).ToArray() 
5

あなたが望むものを達成するためにmyList.Reverse().Take(n)を使用することができます。

+6

を参照してください。 'Reverse' - ' myList.Reverse()を追加呼び出しする必要があります。Take( n).Reverse() ' - 元のリストに格納されているのと同じ順序で要素を返します。 – BACON

+0

@BACON良い点ですが、リストに乱数しか含まれていない場合は、重要ではないかもしれません。 –

関連する問題