C#
 Computer >> コンピューター >  >> プログラミング >> C#

【C#】LINQのSkip()メソッドで配列の指定した数の要素をスキップする方法

はじめに

C#のLINQには、シーケンスの先頭から指定した数の要素を読み飛ばし(スキップ)、残りの要素を返すSkip()メソッドが用意されています。本記事では、整数型の配列を降順に並べ替えたうえで、先頭の3つの要素をスキップする具体例をわかりやすく解説します。

対象となる配列

まず、以下のように整数型の配列を用意します。

int[] points = { 210, 250, 300, 350, 420};

Skip()メソッドの使い方

要素をスキップするには、Skip()メソッドを使用します。引数には「スキップする要素数」を渡します。今回は、配列を降順に並べ替えてから、先頭の3つの要素を除外しています。

IEnumerable<int> skipEle = points.AsQueryable().OrderByDescending(s => s).Skip(3);

このコードでは、まずAsQueryable()で配列をクエリ可能な形式に変換し、続いてOrderByDescending(s => s)で値の大きい順にソートし、最後にSkip(3)によって先頭3要素を読み飛ばしています。

サンプルプログラム

using System;
using System.Linq;
using System.Collections.Generic;
public class Demo {
   public static void Main() {
      int[] points = { 210, 250, 300, 350, 420};
      Console.WriteLine("Initial array...");
     
      foreach (int res in points)
      Console.WriteLine(res);
      IEnumerable<int> skipEle = points.AsQueryable().OrderByDescending(s => s).Skip(3);
      Console.WriteLine("Skipped 3 elements...");

      foreach (int res in skipEle)
      Console.WriteLine(res);
   }
}

実行結果

Initial array...
210
250
300
350
420
Skipped 3 elements...
250
210

処理内容の解説

元の配列は { 210, 250, 300, 350, 420 } です。まずOrderByDescendingにより降順へ並べ替えると { 420, 350, 300, 250, 210 } になります。そこからSkip(3)で先頭の「420・350・300」の3要素がスキップされるため、最終的に出力されるのは残りの「250」と「210」というわけです。

なお、Skip()メソッドは元の配列そのものを変更せず、新しいシーケンスを返す点にも注目してください。元データを保持したまま部分的な要素だけを取得したい場合に非常に便利なメソッドです。

  1. C#で整数配列内のすべての重複要素を検索する方法

    C#で整数配列の中から重複している要素を見つけたい場合、Dictionary(ディクショナリ)を使うのが最もシンプルで効率的な方法の一つです。各要素の出現回数を記録していき、カウントが2以上のものが「重複要素」として特定できます。この記事では、Dictionary<int, int> を使って配列内の重複要素とその出現回数を検出する具体的な手順を解説します。手順1:重複要素を含む配列を用意するまず、重複した値が含まれる整数型の配列を定義します。ここでは例として、10 と 32 がそれぞれ2回出現する配列を使用します。int[] arr = { 24, 10,

  2. 【C#】整数配列から重複のない要素をすべて出力する方法

    C#で整数配列に含まれる重複しない要素(個別の要素)をすべて出力するには、Dictionaryクラスを活用するのが便利です。この記事では、配列とDictionaryを組み合わせて、各要素とその出現回数を表示する方法をわかりやすく解説します。 配列とDictionaryの準備 まず、対象となる整数型の配列と、キー・値のペアを格納するためのDictionaryを用意します。 int[] arr = { 88, 23, 56, 96, 43 }; var d = new Dictionary<int, int>(); Dictionaryコレクショ