Queryable.DefaultIfEmpty Méthode

Définition

Retourne les éléments d'une séquence ou une collection de singletons par défaut si la séquence est vide.Returns the elements in a sequence or a default valued singleton collection if the sequence is empty.

Surcharges

DefaultIfEmpty<TSource>(IQueryable<TSource>)

Retourne les éléments de la séquence spécifiée ou la valeur par défaut du paramètre de type dans une collection de singletons si la séquence est vide.Returns the elements of the specified sequence or the type parameter's default value in a singleton collection if the sequence is empty.

DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource)

Retourne les éléments de la séquence spécifiée ou la valeur indiquée dans une collection de singletons si la séquence est vide.Returns the elements of the specified sequence or the specified value in a singleton collection if the sequence is empty.

DefaultIfEmpty<TSource>(IQueryable<TSource>)

Retourne les éléments de la séquence spécifiée ou la valeur par défaut du paramètre de type dans une collection de singletons si la séquence est vide.Returns the elements of the specified sequence or the type parameter's default value in a singleton collection if the sequence is empty.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TSource> ^ DefaultIfEmpty(System::Linq::IQueryable<TSource> ^ source);
public static System.Linq.IQueryable<TSource> DefaultIfEmpty<TSource> (this System.Linq.IQueryable<TSource> source);
static member DefaultIfEmpty : System.Linq.IQueryable<'Source> -> System.Linq.IQueryable<'Source>
<Extension()>
Public Function DefaultIfEmpty(Of TSource) (source As IQueryable(Of TSource)) As IQueryable(Of TSource)

Paramètres de type

TSource

Le type des éléments de source.The type of the elements of source.

Paramètres

source
IQueryable<TSource>

IQueryable<T> pour lequel retourner une valeur par défaut si vide.The IQueryable<T> to return a default value for if empty.

Retours

IQueryable<TSource>

IQueryable<T> qui contient default(TSource) si source est vide ; sinon, source.An IQueryable<T> that contains default(TSource) if source is empty; otherwise, source.

Exceptions

source a la valeur null.source is null.

Exemples

Les exemples de code suivants montrent comment utiliser DefaultIfEmpty<TSource>(IQueryable<TSource>) pour fournir une valeur par défaut si la séquence source est vide.The following code examples demonstrate how to use DefaultIfEmpty<TSource>(IQueryable<TSource>) to provide a default value in case the source sequence is empty.

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public static void DefaultIfEmptyEx1()
{
    // 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 } };

    // Call DefaultIfEmtpy() on the collection that Select()
    // returns, so that if the initial list is empty, there
    // will always be at least one item in the returned array.
    string[] names =
        pets.AsQueryable()
        .Select(pet => pet.Name)
        .DefaultIfEmpty()
        .ToArray();

    string first = names[0];
    Console.WriteLine(first);
}

/*
    This code produces the following output:

    Barley
*/
Structure Pet
    Public Name As String
    Public Age As Integer
End Structure

Shared Sub DefaultIfEmptyEx1()
    ' Create a list of Pet objects.
    Dim pets As New List(Of Pet)(New Pet() { _
                        New Pet With {.Name = "Barley", .Age = 8}, _
                        New Pet With {.Name = "Boots", .Age = 4}, _
                        New Pet With {.Name = "Whiskers", .Age = 1}})

    ' Call DefaultIfEmtpy() on the collection that Select()
    ' returns, so that if the initial list is empty, there
    ' will always be at least one item in the returned array.
    Dim names() As String = pets.AsQueryable() _
        .Select(Function(Pet) Pet.Name) _
        .DefaultIfEmpty() _
        .ToArray()

    Dim first As String = names(0)
    MsgBox(first)

    ' This code produces the following output:
    '
    ' Barley

End Sub

Remarques

La DefaultIfEmpty<TSource>(IQueryable<TSource>) méthode génère un MethodCallExpression qui représente l’appel de DefaultIfEmpty<TSource>(IQueryable<TSource>) lui-même comme une méthode générique construite.The DefaultIfEmpty<TSource>(IQueryable<TSource>) method generates a MethodCallExpression that represents calling DefaultIfEmpty<TSource>(IQueryable<TSource>) itself as a constructed generic method. Il passe ensuite MethodCallExpression à la CreateQuery<TElement>(Expression) méthode de IQueryProvider représenté par la Provider propriété du source paramètre.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Le comportement de la requête qui se produit suite à l’exécution d’une arborescence d’expressions qui représente l’appel de DefaultIfEmpty<TSource>(IQueryable<TSource>) dépend de l’implémentation du type du source paramètre.The query behavior that occurs as a result of executing an expression tree that represents calling DefaultIfEmpty<TSource>(IQueryable<TSource>) depends on the implementation of the type of the source parameter. Le comportement attendu est qu’il retourne source s’il n’est pas vide.The expected behavior is that it returns source if it is not empty. Sinon, elle retourne un IQueryable<T> qui contient default(TSource) .Otherwise, it returns an IQueryable<T> that contains default(TSource).

S’applique à

DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource)

Retourne les éléments de la séquence spécifiée ou la valeur indiquée dans une collection de singletons si la séquence est vide.Returns the elements of the specified sequence or the specified value in a singleton collection if the sequence is empty.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TSource> ^ DefaultIfEmpty(System::Linq::IQueryable<TSource> ^ source, TSource defaultValue);
public static System.Linq.IQueryable<TSource> DefaultIfEmpty<TSource> (this System.Linq.IQueryable<TSource> source, TSource defaultValue);
static member DefaultIfEmpty : System.Linq.IQueryable<'Source> * 'Source -> System.Linq.IQueryable<'Source>
<Extension()>
Public Function DefaultIfEmpty(Of TSource) (source As IQueryable(Of TSource), defaultValue As TSource) As IQueryable(Of TSource)

Paramètres de type

TSource

Le type des éléments de source.The type of the elements of source.

Paramètres

source
IQueryable<TSource>

IQueryable<T> pour lequel retourner la valeur spécifiée si vide.The IQueryable<T> to return the specified value for if empty.

defaultValue
TSource

Valeur à retourner si la séquence est vide.The value to return if the sequence is empty.

Retours

IQueryable<TSource>

IQueryable<T> qui contient defaultValue si source est vide ; sinon, source.An IQueryable<T> that contains defaultValue if source is empty; otherwise, source.

Exceptions

source a la valeur null.source is null.

Exemples

L’exemple de code suivant illustre une situation dans laquelle il est utile d’appeler DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) dans une requête LINQ.The following code example shows a situation in which it is useful to call DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) in a LINQ query. Une valeur par défaut est passée à DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) dans cet exemple.A default value is passed to DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) in this example.

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

' Create a list of Pet objects.
Dim pets As New List(Of Pet)(New Pet() { _
                   New Pet With {.Name = "Barley", .Age = 8}, _
                   New Pet With {.Name = "Boots", .Age = 4}, _
                   New Pet With {.Name = "Whiskers", .Age = 1}})

' This query returns 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().
Dim oldPets() As String = pets.AsQueryable() _
    .Where(Function(Pet) Pet.Age >= 10) _
    .Select(Function(Pet) Pet.Name) _
    .DefaultIfEmpty("[EMPTY]") _
    .ToArray()
Try
    MsgBox("First query: " + oldPets(0))
Catch ex As Exception
    Console.WriteLine("First query: An exception was thrown: " + ex.Message)
End Try

' This query selects only those pets that are 10 or older.
' This code does not call DefaultIfEmpty().
Dim oldPets2() As String = _
    pets.AsQueryable() _
    .Where(Function(Pet) Pet.Age >= 10) _
    .Select(Function(Pet) Pet.Name) _
    .ToArray()

' There may be no elements in the array, so directly
' accessing element 0 may throw an exception.
Try
    MsgBox("Second query: " + oldPets2(0))
Catch ex As Exception
    MsgBox("Second query: An exception was thrown: " + ex.Message)
End Try

' This code produces the following output:
'
' First(query) : [EMPTY]
' Second query: An exception was thrown: Index was outside the bounds of the array.

Remarques

La DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) méthode génère un MethodCallExpression qui représente l’appel de DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) lui-même comme une méthode générique construite.The DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) method generates a MethodCallExpression that represents calling DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) itself as a constructed generic method. Il passe ensuite MethodCallExpression à la CreateQuery<TElement>(Expression) méthode de IQueryProvider représenté par la Provider propriété du source paramètre.It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

Le comportement de la requête qui se produit suite à l’exécution d’une arborescence d’expressions qui représente l’appel de DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) dépend de l’implémentation du type du source paramètre.The query behavior that occurs as a result of executing an expression tree that represents calling DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) depends on the implementation of the type of the source parameter. Le comportement attendu est qu’il retourne source s’il n’est pas vide.The expected behavior is that it returns source if it is not empty. Sinon, elle retourne un IQueryable<T> qui contient defaultValue .Otherwise, it returns an IQueryable<T> that contains defaultValue.

S’applique à