エクスポート (0) 印刷
すべて展開
この記事は機械翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。 詳細情報
訳文
原文

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

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

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

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

型パラメーター

TSource

source の要素の型。

パラメーター

source
型 : System.Collections.Generic.IEnumerable<TSource>
1 つの要素を返す IEnumerable<T>

戻り値

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

使用上の注意

Visual Basic および Visual C# では、このメソッドを、IEnumerable<TSource> 型のオブジェクトのインスタンス メソッドとして呼び出すことができます。インスタンス メソッド構文を使用してこのメソッドを呼び出す場合は、最初のパラメーターを省略します。詳細については、「拡張メソッド (Visual Basic)」または「拡張メソッド (C# プログラミング ガイド)」を参照してください。

例外条件
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
            */



.NET Framework

サポート対象 : 4.5.2、4.5.1、4.5、4、3.5

.NET Framework Client Profile

サポート対象 : 4、3.5 SP1

汎用性のあるクラス ライブラリ

サポート対象 : 汎用性のあるクラス ライブラリ

Windows ストア アプリ用 .NET

サポート対象 : Windows 8

Windows Phone アプリ用 .NET

サポート対象 : Windows Phone 8、Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (サーバー コア ロールはサポート対象外), Windows Server 2008 R2 (SP1 以降でサーバー コア ロールをサポート。Itanium はサポート対象外)

.NET Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

コミュニティの追加

追加
表示:
© 2014 Microsoft