ホームページ > バックエンド開発 > C++ > LINQ を使用してコレクションから最後の N 要素を取得するにはどうすればよいですか?

LINQ を使用してコレクションから最後の N 要素を取得するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-04 03:49:39
オリジナル
676 人が閲覧しました

How Can I Retrieve the Last N Elements from a Collection Using LINQ?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート