Markieren Sie das Kontrollkästchen Englisch, um die englische Version dieses Artikels anzuzeigen. Sie können den englischen Text auch in einem Popup-Fenster einblenden, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch
Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

Queryable.FirstOrDefault<TSource>-Methode (IQueryable<TSource>)

Gibt das erste Element einer Sequenz zurück, oder einen Standardwert, wenn die Sequenz keine Elemente enthält.

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

public static TSource FirstOrDefault<TSource>(
	this IQueryable<TSource> source
)

Typparameter

TSource

Der Typ der Elemente von source.

Parameter

source
Typ: System.Linq.IQueryable<TSource>
Das IQueryable<T>, dessen erstes Element zurückgegeben werden soll.

Rückgabewert

Typ: TSource
default(TSource), wenn source leer ist, andernfalls das erste Element in source.

Hinweis zur Verwendung

In Visual Basic und C# können Sie diese Methode als Instanzenmethode für ein beliebiges Objekt vom Typ IQueryable<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 hat den Wert null.

Die FirstOrDefault<TSource>(IQueryable<TSource>)-Methode generiert einen MethodCallExpression, der den Aufruf von FirstOrDefault<TSource>(IQueryable<TSource>) durch sich selbst als konstruierte generische Methode darstellt. Anschließend übergibt sie die MethodCallExpression an die Execute<TResult>(Expression)-Methode des IQueryProvider, der von der Provider-Eigenschaft des source-Parameters dargestellt wird.

Das Abfrageverhalten, das durch das Ausführen einer Ausdrucksbaumstruktur auftritt, die einen Aufruf von FirstOrDefault<TSource>(IQueryable<TSource>) darstellt, hängt von der Implementierung des Typs des source-Parameters ab. Es wird erwartet, dass das erste Element in source zurückgegeben wird, oder ein Standardwert, wenn source leer ist.

Die FirstOrDefault-Methode stellt keine Möglichkeit zum Angeben eines zurückzugebenden Standardwerts bereit, wenn source leer ist. Wenn Sie einen anderen Standardwert als default(TSource) angeben möchten, müssen Sie die DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource)-Methode verwenden, wie im Beispielabschnitt beschrieben.

Im folgenden Codebeispiel wird die Verwendung von FirstOrDefault<TSource>(IQueryable<TSource>) für eine leere Sequenz veranschaulicht.


            // Create an empty array.
            int[] numbers = { };
            // Get the first item in the array, or else the 
            // default value for type int (0).
            int first = numbers.AsQueryable().FirstOrDefault();

            Console.WriteLine(first);

            /*
                This code produces the following output:

                0
            */



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>(IQueryable<TSource>, TSource)-Methode den Standardwert angeben, der bei einer leeren Auflistung verwendet werden soll. Rufen Sie dann First<TSource>(IQueryable<TSource>) auf, um das erste Element abzurufen. Im folgenden Codebeispiel werden beide Verfahren zum Abrufen des Standardwerts 1 verwendet, wenn eine Auflistung numerischer Monate leer ist. Da der Standardwert für eine ganze Zahl 0 ist und keinem Monat entspricht, muss stattdessen als Standardwert 1 angegeben werden. Die erste Ergebnisvariable wird auf den unerwünschten Standardwert geprüft, nachdem die Abfrage abgeschlossen ist. Die zweite Ergebnisvariable wird durch einen Aufruf von DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) abgerufen, um den Standardwert 1 anzugeben.


            List<int> months = new List<int> { };

            // Setting the default value to 1 after the query.
            int firstMonth1 = months.AsQueryable().FirstOrDefault();
            if (firstMonth1 == 0)
            {
                firstMonth1 = 1;
            }
            Console.WriteLine("The value of the firstMonth1 variable is {0}", firstMonth1);

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

            /*
             This code produces the following output:

             The value of the firstMonth1 variable is 1
             The value of the firstMonth2 variable is 1
            */



.NET Framework

Unterstützt in: 4, 3.5

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Unterstützt in:

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

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