Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Queryable.DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource)

 

Data di pubblicazione: ottobre 2016

Restituisce gli elementi della sequenza specificata o il valore specificato in una raccolta singleton se la sequenza è vuota.

Spazio dei nomi:   System.Linq
Assembly:  System.Core (in System.Core.dll)

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

Parametri

source
Type: System.Linq.IQueryable<TSource>

Il IQueryable<T> per restituire il valore specificato per se è vuota.

defaultValue
Type: TSource

Valore da restituire se la sequenza è vuota.

Valore restituito

Type: System.Linq.IQueryable<TSource>

Un IQueryable<T> contenente defaultValue Se source è vuota; in caso contrario, source.

Parametri tipo

TSource

Tipo degli elementi di source.

Exception Condition
ArgumentNullException

source è null.

Il DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) metodo genera un MethodCallExpression che rappresenta una chiamata DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) stesso come un metodo generico costruito. Passa quindi il MethodCallExpression per il CreateQuery<TElement>(Expression) metodo il IQueryProvider rappresentato dal Provider proprietà del source parametro.

Il comportamento della query che si verifica in seguito all'esecuzione di una struttura ad albero dell'espressione che rappresenta una chiamata DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) dipende dall'implementazione del tipo di source parametro. Il comportamento previsto è che restituisce source Se non è vuota. In caso contrario, restituirà un IQueryable<T> contenente defaultValue.

Esempio di codice seguente viene illustrata una situazione in cui è utile chiamare DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) in un LINQ query. Viene passato un valore predefinito per DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) in questo esempio.

// 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
Disponibile da 8
.NET Framework
Disponibile da 3.5
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.1
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: