配列すべてが条件を満たしているか簡単に判定できないかな
LINQのALLを利用することで、すべての配列・リストに対して条件判定を簡単に行うことができます。他にも判定ができる便利なメソッドを紹介しましょう。
目次
LINQのALLでコレクションすべての条件判定
コレクションの要素がすべて条件を満たしているかを判定をしたいとき、LINQのALLメソッドを利用することで簡単に判定をすることができます。
ALLメソッドの戻り値は、全ての条件を満たす場合にtrue、満たさない場合にfalseを返します。
コレクション.All(条件)
ALLで条件を判定することですべての要素が条件を満たした場合に、 True / Falseで返してくれます。
private void Form1_Load(object sender, EventArgs e)
{
List<int> lstNum = new List<int>(){ 1, 2, 3, 4, 5, 6, 7 };
bool isResult_0 = lstNum.All(it => it <= 8);
bool isResult_1 = lstNum.All(it => it <= 5);
Debug.WriteLine("すべて8以下か:{0}", isResult_0);
Debug.WriteLine("すべて5以下か:{0}", isResult_1);
}
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim lstNum As New List(Of Integer)(New Integer() {1, 2, 3, 4, 5, 6, 7})
Dim isResult_0 As Boolean = lstNum.All(Function(it) it <= 8)
Dim isResult_1 As Boolean = lstNum.All(Function(it) it <= 5)
Debug.WriteLine("すべて8以下か:{0}", isResult_0)
Debug.WriteLine("すべて5以下か:{0}", isResult_1)
End Sub
注意点としては、要素を一つも持っていない場合、判定するとTrueが返ってきてしまうのでそこだけ注意が必要です。
Anyメソッドと組み合わせて安全に利用する
Anyメソッドは条件を満たす要素があるかを判定することができます。
コレクション.Any()
Allメソッドの要素がない場合にTrueが返ってくる対策として、要素があるかどうかをチェックすることのできるAnyメソッドを組み合わせることで安全に利用することができます。
private void Form1_Load(object sender, EventArgs e)
{
List<int> lstNum = new List<int>();
bool isResult_0 = lstNum.Any() && lstNum.All(it => it <= 8) ;
Debug.WriteLine("すべて8以下か:{0}", isResult_0);
}
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim lstNum As New List(Of Integer)
Dim isResult_0 As Boolean = lstNum.All(Function(it) it <= 8) AndAlso lstNum.Any()
Debug.WriteLine("すべて8以下か:{0}", isResult_0)
End Sub
ALLを利用して要素の判定を簡単に実装することができました。
要素がない場合だけ注意が必要なので、Anyと組み合わせて安全に利用するようにしましょう。
リスキリングでキャリアアップしてみませんか?
リスキリング(学び直し)は、経済産業省が推奨しており、
今だけ、最大70%のキャッシュバックを受けることができます。
最大70%の給付金が出るおすすめのプログラミングスクール!
国策で予算が決められているため申し込みが多い場合は早期に終了する可能性があります!
興味のある方はすぐに確認しましょう。