C#のTakeWhileメソッドの使い方をわかりやすく解説
C#のLINQに用意されているTakeWhile()メソッドを使うと、Predicate(述語)で指定した条件が成立している間、シーケンスの先頭から要素を取得することができます。
このメソッドは、条件を満たす限り先頭から順に要素を取り出し、最初に条件を満たさなくなった要素に到達した時点で処理を停止するという特徴があります。そのため、配列の途中に条件外の要素があると、それ以降の要素はたとえ条件を満たしていても取得されない点に注意が必要です。
TakeWhile()メソッドの基本的な使い方
まず、整数型の配列を宣言して初期化します。
int[] arr = { 25, 40, 65, 70 };
次に、TakeWhile()メソッドとラムダ式(Predicate)を組み合わせて、「30未満」という条件を指定します。
var val = arr.TakeWhile(ele => ele < 30);
このコードでは、配列の先頭から順に各要素が「30より小さいか」どうかを判定します。条件を満たす間だけ要素を取得し続けます。
サンプルコード
以下は、Predicateを使って30未満の値を表示する完全なサンプルプログラムです。
using System;
using System.Linq;
public class Demo {
public static void Main() {
int[] arr = { 25, 40, 65, 70 };
var val = arr.TakeWhile(ele => ele < 30);
foreach (int res in val) {
Console.WriteLine(res);
}
}
}
実行結果
25
実行結果の解説
出力されるのは 25 のみです。これは、配列の先頭要素である25は条件「30未満」を満たしていますが、次の要素40は条件を満たしていないため、そこで処理が中断されるからです。65や70も30以上のため取得対象にはなりません。
もし配列内のすべての条件に合致する要素を取得したい場合は、Where()メソッドを使用するとよいでしょう。TakeWhile()は「先頭からの連続した条件一致」を扱いたい場合に有効なメソッドです。
-
C#のCompareTo()メソッドの使い方を解説
C#では、2つの値を比較する際にCompareTo()メソッドを使用します。このメソッドは、呼び出し元の値と引数で渡した値を比較し、その大小関係を整数値として返します。CompareTo()メソッドの戻り値CompareTo()メソッドの戻り値は以下の3パターンです。0 = 両方の値が等しい場合1 = 呼び出し元の値が引数の値より大きい場合(第2の数値が小さい)-1 = 呼び出し元の値が引数の値より小さい場合(第1の数値が小さい)CompareTo()メソッドの実装例それでは、C#でCompareTo()メソッドを実装するサンプルコードを見てみましょう。ここでは、同じ値を持つ2つのint型変数
-
RubyのArray#zipメソッド徹底解説!2つの配列をスマートに結合する方法
2つの配列を要素ごとに比較して、その違いを見つけたいと思ったことはありませんか? あるいは、各インデックスごとに最大の数値を求めたい、キーのリストと値のリストを組み合わせてハッシュを作りたい――そんな場面にも出会うことがあるでしょう。 …これを「面倒な方法」で実装すると、次のようなコードになります。 例:冗長な書き方 a = [1,2,3,4,5] b = [1,2,3,6,8] c = a.map.with_index { |_, idx| [a[idx], b[idx]] } # [[1, 1], [2, 2], [3, 3], [4, 6], [5, 8]] 確かに動作はしますが