LINQ を使用したコレクションの最後の N 要素の取得
Linq には、オブジェクトのコレクションを操作およびクエリするためのさまざまな演算子が用意されています。一般的な要件の 1 つは、コレクションから最後の N 要素を取得することです。これは、LINQ 演算子の組み合わせによって実現できます。
項目のコレクションがあると仮定しましょう。最後の N 要素を取得するには、次の手順を使用できます:
ステップ 1: 開始インデックスを決定する:
コレクション内の開始インデックスを計算する必要があります。最後の N 要素が始まる場所。これは、コレクション内の要素の合計数から必要な要素数を減算することで実現されます。
int startIndex = Math.Max(0, collection.Count() - N);
ステップ 2: 開始インデックスにスキップします:
「Skip」演算子を使用して、startIndex を通過して残りの要素を選択します。 collection.
var lastNElements = collection.Skip(startIndex);
拡張メソッドのアプローチ:
最後の N 要素を取得する組み込み演算子がない場合は、拡張メソッドを作成できます。このプロセスを簡素化するためです。拡張メソッドは IEnumerable インターフェイスを拡張し、「TakeLast」メソッドを提供します。
public static class MiscExtensions { public static IEnumerable<T> TakeLast<T>(this IEnumerable<T> source, int N) { // Determine the starting index int startIndex = Math.Max(0, source.Count() - N); // Skip to the starting index and select remaining elements return source.Skip(startIndex); } }
この拡張メソッドは次のように使用できるようになりました:
var lastNElements = collection.TakeLast(5);
パフォーマンスに関する考慮事項:
「Count()」を呼び出すと、特定のデータが列挙される可能性があります構造体を使用するため、データを 2 回通過することになります。前方専用の列挙可能項目で 2 つのパスを回避するには、列挙中に項目を格納するために一時バッファーを使用することを検討してください。
以上がLINQ を使用してコレクションから最後の N 要素を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。