【C#】SkipWhile()メソッドで指定した条件が真である限りシーケンスの要素をスキップする方法
指定された条件が真である限り、シーケンスから要素をスキップするには、LINQのSkipWhile()メソッドを使用します。
配列の定義
まず、処理対象となる整数型の配列を用意します。
int[] marks = { 35, 42, 48, 88, 55, 90, 95, 85 };スキップ条件の設定
今回は「50以上の値」という条件をラムダ式で指定します。
s => s >= 50
この条件が真である間、50以上の要素が先頭から順にスキップされ、条件が偽になった時点で残りのすべての要素が返されます。
サンプルコード
using System;
using System.Linq;
using System.Collections.Generic;
public class Demo {
public static void Main() {
int[] marks = { 35, 42, 48, 88, 55, 90, 95, 85 };
// 降順に並べ替えてから、50以上の要素をスキップ
IEnumerable<int> selMarks = marks.AsQueryable().OrderByDescending(s => s).SkipWhile(s => s >= 50);
// 残りの要素を表示
Console.WriteLine("Skipped marks > 60...");
foreach (int res in selMarks) {
Console.WriteLine(res);
}
}
}
実行結果
Skipped marks > 60...
48
42
35
コードの解説
このプログラムでは、まずOrderByDescending()メソッドによって配列を降順(95, 90, 88, 85, 55, 48, 42, 35)に並べ替えています。その後、SkipWhile(s => s >= 50)により、「50以上」という条件が真である間だけ要素をスキップします。
ここで重要なのは、SkipWhileはシーケンスの先頭からのみ条件を評価するという点です。条件が最初に偽になった時点で評価を停止し、それ以降の要素はたとえ条件を満たしていてもすべてそのまま返されます。
今回の例では、降順に並べ替えたシーケンスの先頭にある95, 90, 88, 85, 55がスキップされ、条件を満たさない48以降の要素「48, 42, 35」が出力されます。条件に合致する要素を途中まで除外したい場合に、SkipWhileは非常に便利なメソッドです。
-
C#でリストの末尾3つの要素を逆順に表示する方法
C#のリスト(List)から末尾の3つの要素を取り出すには Take() メソッド を使用し、さらに順序を反転させるには Reverse() メソッド を組み合わせます。 リストの宣言と要素の追加 まず、リストを宣言し、要素を追加します。 List<string> myList = new List<string>(); myList.Add(One); myList.Add(Two); myList.Add(Three); myList.Add(Four); 末尾3つの要素を逆順で取得する 次に、Reverse() メソッドでリスト全体を逆順に並べ替えた後、Take
-
JavaでLinkedListから要素を削除する方法【サンプルコード付き】
この記事では、JavaのLinkedList(リンクリスト)から要素を削除する方法について詳しく解説します。java.util.LinkedListクラスは、双方向リンクリスト(doubly-linked list)として期待される一連の操作を提供します。インデックスを指定した操作では、リストの先頭と末尾のうち、指定されたインデックスに近い方から要素をたどって処理が行われるという特徴があります。以下に具体的な例を示します。入力:The list is defined as: [Java, Scala, Python, JavaScript, C++]期待される出力:The list after