(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Enumerable.SingleOrDefault<TSource>-Methode (IEnumerable<TSource>)

Gibt das einzige Element einer Sequenz zurück oder einen Standardwert, wenn die Sequenz leer ist. Diese Methode löst eine Ausnahme aus, wenn mehrere Elemente in der Sequenz vorhanden sind.

Namespace:  System.Linq
Assembly:  System.Core (in System.Core.dll)

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

Typparameter

TSource

Der Typ der Elemente von source.

Parameter

source
Typ: System.Collections.Generic.IEnumerable<TSource>
Ein IEnumerable<T>, dessen einziges Element zurückgegeben werden soll.

Rückgabewert

Typ: TSource
Das einzige Element der Eingabesequenz oder default(TSource), wenn die Sequenz keine Elemente enthält.

Hinweis zur Verwendung

In Visual Basic und C# können Sie diese Methode als Instanzenmethode für ein beliebiges Objekt vom Typ IEnumerable<TSource> aufrufen. Bei Verwendung der Syntax für Instanzenmethoden lassen Sie den ersten Parameter aus. Weitere Informationen finden Sie unter Erweiterungsmethoden (Visual Basic) und Erweiterungsmethoden (C#-Programmierhandbuch).

AusnahmeBedingung
ArgumentNullException

source ist null.

InvalidOperationException

Die Eingabesequenz enthält mehr als ein Element.

Der Standardwert für Referenztypen und Typen, die NULL-Werte zulassen, ist null.

Die SingleOrDefault-Methode stellt keine Möglichkeit zum Angeben eines Standardwerts bereit. Wenn Sie einen anderen Standardwert als default(TSource) angeben möchten, müssen Sie die DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource)-Methode verwenden, wie im Beispielabschnitt beschrieben.

Im folgenden Codebeispiel wird veranschaulicht, wie Sie mit SingleOrDefault<TSource>(IEnumerable<TSource>) das einzige Element eines Arrays auswählen.


            string[] fruits1 = { "orange" };

            string fruit1 = fruits1.SingleOrDefault();

            Console.WriteLine(fruit1);

            /*
             This code produces the following output:

             orange
            */



Im folgenden Codebeispiel wird gezeigt, dass SingleOrDefault<TSource>(IEnumerable<TSource>) einen Standardwert zurückgibt, wenn die Sequenz nicht genau ein Element enthält.


            string[] fruits2 = { };

            string fruit2 = fruits2.SingleOrDefault();

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

            /*
             This code produces the following output:

             No such string!
            */



Unter Umständen ist der Wert von default(TSource) nicht der Standardwert, den Sie verwenden möchten, wenn die Auflistung keine Elemente enthält. Anstatt im Ergebnis ggf. den unerwünschten Standardwert zu ändern, können Sie mit der DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource)-Methode den Standardwert angeben, der bei einer leeren Auflistung verwendet werden soll. Rufen Sie dann Single<TSource>(IEnumerable<TSource>) auf, um das Element abzurufen. Im folgenden Codebeispiel werden beide Verfahren zum Abrufen des Standardwerts 1 verwendet, wenn eine Auflistung von Seitenzahlen leer ist. Da der Standardwert für eine ganze Zahl 0 ist und i. d. R. keiner gültigen Seitenzahl entspricht, muss stattdessen als Standardwert 1 angegeben werden. Die erste Ergebnisvariable wird auf den unerwünschten Standardwert geprüft, nachdem das Ausführen der Abfrage abgeschlossen ist. Die zweite Ergebnisvariable wird mithilfe von DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) abgerufen, um den Standardwert 1 anzugeben.


            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

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: 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 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft