DefaultIfEmpty(TSource) Methode (IQueryable(TSource), TSource)
Inhaltsverzeichnis reduzieren
Inhaltsverzeichnis erweitern
Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

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

 

Gibt die Elemente der angegebenen Sequenz oder den angegebenen Wert in einer singletonauflistung zurück, 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
)

Parameter

source
Type: System.Linq.IQueryable<TSource>

Die IQueryable<T> für angegebenen Wert wird zurückgegeben, wenn leer.

defaultValue
Type: TSource

Der Wert, der zurückgegeben werden soll, wenn die Sequenz leer ist.

Rückgabewert

Type: System.Linq.IQueryable<TSource>

Ein IQueryable<T> enthält defaultValue Wenn source leer ist, andernfalls wird source.

Typparameter

TSource

Der Typ der Elemente von source.

Exception Condition
ArgumentNullException

source ist null.

Die DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) -Methode generiert eine MethodCallExpression Aufruf darstellt DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) sich selbst als konstruierte generische Methode. Anschließend übergibt der MethodCallExpression zu der CreateQuery<TElement>(Expression) Methode der IQueryProvider durch dargestellt die Provider Eigenschaft der source Parameter.

Das Abfrageverhalten durch das Ausführen einer Ausdrucksbaumstruktur, die aufrufende darstellt, DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) hängt von der Implementierung des Typs der source Parameter. Das erwartete Verhalten ist, dass zurückgegeben source wenn er nicht leer ist. Andernfalls gibt es ein IQueryable<T> enthält defaultValue.

Das folgende Codebeispiel zeigt eine Situation, in denen es empfiehlt sich, rufen Sie DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) in einer LINQ Abfrage. Ein Standardwert übergeben wird, um DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) in diesem Beispiel.

// 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.
*/

Universal Windows Platform
Verfügbar seit 8
.NET Framework
Verfügbar seit 3.5
Portable Class Library
Unterstützt in: portable .NET platforms
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.1
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen:
© 2016 Microsoft