C#の『SingleOrDefault』の使い方が分からない…教えてください!
C#を学んでいるけど…
「SingleOrDefaultの使い方が分からない」
このような疑問を持っていませんか?
この記事では、LINQのひとつである『SingleOrDefault』について現役エンジニアが分かりやすく解説します。
時短でC#を学びたい方は、プログラミングスクールを受講しましょう!
まだ、C#の開発環境構築が出来ていない方はこちらを参考にしてください。
SingleOrDefaultの使い方
SingleOrDefaultの使い方を解説する前に、SingleOrDefaultで何が出来るのかを把握しておきましょう。
SingleOrDefault = 条件を満たす要素を抽出
このような考え方で問題ありません。SingleOrDefaultを使用すると配列(リスト)の中から、条件を満たしている値がただ一つの時にその値を返します。
ここまで読んでいると、「Singleと使い方変わらない」と思いますよね。
Singleについて分からない方は、以下の記事を参考にしてください。
SingleとSingleOrDefaultの違いは以下のようになります。
ただし、条件を満たす要素が複数存在する場合には、例外エラーになりますので、注意してください。
それでは、実際のコードを用いながらSingleOrDefaultの使い方を解説していきます。
まずは、SingleOrDefaultの使い方から説明します。SingleOrDefaultを使うときには以下のように記述します。
配列.SingleOrDefault(条件式)
実際のコードを用いながらSingleOrDefaultの使い方を解説していきます。
SingleOrDefaultを使ってシーケンスを出力するときには以下のように記述します。
using System;
using System.Collections.Generic;
using System.Linq;
namespace sample
{
class LinqSingleOrDefault
{
static public void BlogLinqSingleOrDefault()
{
//値一覧を変数NumberListとして宣言・初期化
int[] NumberList = new int[] {
1,
2,
3,
4,
5,
6,
7,
8,
9,
10
};
//Single
Console.WriteLine($"配列の要素で10と等しい値:{NumberList.SingleOrDefault(n => n == 10)}");
Console.WriteLine($"配列の要素で10より大きい値:{NumberList.SingleOrDefault(n => n > 10)}");
try
{
Console.WriteLine($"10以下の値:{NumberList.SingleOrDefault(n => n <= 10)}");
}
catch (System.Exception e)
{
Console.WriteLine($"条件を満たしている値がただ一つではないため、例外エラーが発生しました。");
return;
}
}
}
}
サンプルコードを実行した際の出力結果は、以下のようになります。
配列の要素で10と等しい値:10
配列の要素で10より大きい値:0
条件を満たしている値がただ一つではないため、例外エラーが発生しました。
注目していただきたいのは、SingleOrDefaultを使っている26行目、27行目、31行目です。
配列.SingleOrDefault(条件式)
これを基にサンプルコードを解説すると、「配列 = NumberList」、「条件式 = (n == 10), (n > 10), (n <= 10)」となります。
つまり、配列(NumberList)の各値のうち条件式((n == 10), (n > 10), (n <= 10))を満たしている値がただ一つの時に出力(Console.WriteLine)するということです。
このようにして、C#ではSingleOrDefaultを使用することで、コードを簡潔に書くことが出来ます。
【まとめ】SingleOrDefaultは条件を満たした最後の要素を出力できる
SingleOrDefaultの使い方は理解できましたか?
この記事では、C#のSingleOrDefaultの使い方について紹介しました。
今後も一緒に学んでいきましょう!
最後までお読みいただき、ありがとうございました!