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

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

Linda Hamilton
リリース: 2025-01-05 04:21:38
オリジナル
500 人が閲覧しました

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

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