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

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

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-05 04:21:38467ブラウズ

How to Efficiently Get the Last N Elements of a Collection Using LINQ?

LINQ を使用してコレクションの最後の N 要素を取得する方法

コレクションの最後の N 要素を取得するために、LINQ は効率的なSkip() メソッド。 Math.Max() を介して条件ステートメントと組み合わせることで、負の入力に起因するエラーを回避できます。

collection.Skip(Math.Max(0, collection.Count() - N));

このアプローチでは、並べ替えに頼らずに元の項目の順序が保持され、複数の LINQ プロバイダーと互換性があります。 .

柔軟性を高めるために、提供された拡張メソッドは上記をカプセル化します。ロジック:

public static class MiscExtensions
{
    public static IEnumerable<T> TakeLast<T>(this IEnumerable<T> source, int N)
    {
        return source.Skip(Math.Max(0, source.Count() - N));
    }
}

使用法:

collection.TakeLast(5);

Count() 呼び出しでは特定のデータ構造の列挙が発生しますが、リストや配列などの一般的なデータ構造には最適化が存在します。順方向のみの列挙可能オブジェクトの場合、代替のワンパス アルゴリズム (Lasse V. Karlsen や Mark Byers など) により、データの複数のパスが回避されます。

以上がLINQ を使用してコレクションの最後の N 要素を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。