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