War diese Seite hilfreich?
Ihr Feedback ist uns wichtig. Teilen Sie uns Ihre Meinung mit.
Weiteres Feedback?
1500 verbleibende Zeichen
Exportieren (0) 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

Queryable.DefaultIfEmpty<TSource>-Methode (IQueryable<TSource>, TSource)

Gibt die Elemente der angegebenen Sequenz zurück, oder den angegebenen Wert in einer Singletonauflistung, wenn die Sequenz leer ist.

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

public static IQueryable<TSource> DefaultIfEmpty<TSource>(
	this IQueryable<TSource> source,
	TSource defaultValue
)

Typparameter

TSource

Der Typ der Elemente von source.

Parameter

source
Typ: System.Linq.IQueryable<TSource>
Das IQueryable<T>, für das der angegebene Wert zurückgegeben soll, wenn die Sequenz leer ist.
defaultValue
Typ: TSource
Der Wert, der zurückgegeben werden soll, wenn die Sequenz leer ist.

Rückgabewert

Typ: System.Linq.IQueryable<TSource>
Ein IQueryable<T>, das defaultValue enthält, wenn source leer ist, andernfalls 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 ist null.

Die DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource)-Methode generiert einen MethodCallExpression, der den Aufruf von DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) durch sich selbst als konstruierte generische Methode darstellt. Anschließend übergibt sie die MethodCallExpression an die CreateQuery<TElement>(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 DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) darstellt, hängt von der Implementierung des Typs des source-Parameters ab. Es wird erwartet, dass source zurückgegeben wird, wenn die Sequenz nicht leer ist. Andernfalls wird ein IQueryable<T> zurückgegeben, das defaultValue enthält.

Im folgenden Codebeispiel wird eine Situation veranschaulicht, in der es sich empfiehlt, in einer LINQ-Abfrage DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) aufzurufen. In diesem Beispiel wird an DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) ein Standardwert übergeben.


                // Create a list of Pet objects.
                List<Pet> pets =
                    new List<Pet>{ new Pet { Name="Barley", Age=8 },
                                   new Pet { Name="Boots", Age=4 },
                                   new Pet { Name="Whiskers", Age=1 } };

                // This query selects only those pets that are 10 or older.
                // In case there are no pets that meet that criteria, call
                // DefaultIfEmpty(). This code passes an (optional) default
                // value to DefaultIfEmpty().
                string[] oldPets =
                    pets.AsQueryable()
                    .Where(pet => pet.Age >= 10)
                    .Select(pet => pet.Name)
                    .DefaultIfEmpty("[EMPTY]")
                    .ToArray();

                Console.WriteLine("First query: " + oldPets[0]);

                // This query selects only those pets that are 10 or older.
                // This code does not call DefaultIfEmpty().
                string[] oldPets2 =
                    pets.AsQueryable()
                    .Where(pet => pet.Age >= 10)
                    .Select(pet => pet.Name)
                    .ToArray();

                // There may be no elements in the array, so directly
                // accessing element 0 may throw an exception.
                try
                {
                    Console.WriteLine("Second query: " + oldPets2[0]);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Second query: An exception was thrown: " + e.Message);
                }

                /*
                    This code produces the following output:

                    First query: [EMPTY]
                    Second query: An exception was thrown: Index was outside the bounds of the array.
                */



.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
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2015 Microsoft