MSDN ライブラリ
この記事は機械翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。 詳細情報
訳文
原文

Enumerable.SingleOrDefault<TSource> メソッド (IEnumerable<TSource>)

 

シーケンスの唯一の要素を返します。シーケンスが空の場合、既定値を返します。シーケンス内に要素が複数ある場合、このメソッドは例外をスローします。

名前空間:   System.Linq
アセンブリ:  System.Core (System.Core.dll 内)

public static TSource SingleOrDefault<TSource>(
	this IEnumerable<TSource> source
)

パラメーター

source

1 つの要素を返す IEnumerable<T>

戻り値

Type: TSource

入力シーケンスの 1 つの要素。シーケンスに要素が含まれない場合は default (TSource)。

型パラメーター

TSource

source の要素の型。

Exception Condition
ArgumentNullException

sourcenull なので、

InvalidOperationException

入力シーケンスに複数の要素が含まれています。

参照型および null 許容型の既定値は null です。

SingleOrDefault メソッドには、既定値を指定する方法がありません。 default(TSource) 以外の既定値を指定するには、「使用例」に示されているように DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) メソッドを使用します。

SingleOrDefault<TSource>(IEnumerable<TSource>) を使用して配列の唯一の要素を選択する方法を次のコード例に示します。

string[] fruits1 = { "orange" };

string fruit1 = fruits1.SingleOrDefault();

Console.WriteLine(fruit1);

/*
 This code produces the following output:

 orange
*/

シーケンスに含まれる要素が 1 つだけではない場合に SingleOrDefault<TSource>(IEnumerable<TSource>) が既定値を返すことを示すコード例を次に示します。

string[] fruits2 = { };

string fruit2 = fruits2.SingleOrDefault();

Console.WriteLine(
    String.IsNullOrEmpty(fruit2) ? "No such string!" : fruit2);

/*
 This code produces the following output:

 No such string!
*/

コレクションに要素が含まれていない場合、default(TSource) の値が目的の既定値でないことがあります。望ましくない既定値による結果を確認し、必要に応じてそれを変更するのではなく、DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) メソッドを使用して、コレクションが空の場合に使用する既定値を指定できます。次に、Single<TSource>(IEnumerable<TSource>) を呼び出して、要素を取得します。両方の方法を使用して、ページ番号のコレクションが空の場合に 1 という既定値を取得するコード例を次に示します。整数の既定値は 0 であり、これは一般に有効なページ番号ではないため、既定値は 1 として指定する必要があります。クエリの実行が終了した後で、望ましくない既定値に対する最初の結果変数を確認します。2 番目の結果変数は、DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) を使用して既定値 1 を指定することによって得られます。

int[] pageNumbers = { };

// Setting the default value to 1 after the query.
int pageNumber1 = pageNumbers.SingleOrDefault();
if (pageNumber1 == 0)
{
    pageNumber1 = 1;
}
Console.WriteLine("The value of the pageNumber1 variable is {0}", pageNumber1);

// Setting the default value to 1 by using DefaultIfEmpty() in the query.
int pageNumber2 = pageNumbers.DefaultIfEmpty(1).Single();
Console.WriteLine("The value of the pageNumber2 variable is {0}", pageNumber2);

/*
 This code produces the following output:

 The value of the pageNumber1 variable is 1
 The value of the pageNumber2 variable is 1
*/

Universal Windows Platform
4.5 から利用可能
.NET Framework
3.5 から利用可能
Portable Class Library
サポート対象 : portable .NET platforms
Silverlight
2.0 から利用可能
Windows Phone Silverlight
7.0 から利用可能
Windows Phone
8.1 から利用可能
トップに戻る
表示:
© 2016 Microsoft