Enumerable.DefaultIfEmpty Método

Definição

Retorna os elementos de um IEnumerable<T>ou uma coleção singleton com valor padrão se a sequência estiver vazia.

Sobrecargas

DefaultIfEmpty<TSource>(IEnumerable<TSource>)

Retorna os elementos da sequência especificada ou o valor padrão do parâmetro de tipo em uma coleção singleton se a sequência estiver vazia.

DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource)

Retorna os elementos da sequência especificada ou o valor especificado em uma coleção singleton se a sequência estiver vazia.

DefaultIfEmpty<TSource>(IEnumerable<TSource>)

Origem:
DefaultIfEmpty.cs
Origem:
DefaultIfEmpty.cs
Origem:
DefaultIfEmpty.cs

Retorna os elementos da sequência especificada ou o valor padrão do parâmetro de tipo em uma coleção singleton se a sequência estiver vazia.

public static System.Collections.Generic.IEnumerable<TSource> DefaultIfEmpty<TSource> (this System.Collections.Generic.IEnumerable<TSource> source);
public static System.Collections.Generic.IEnumerable<TSource?> DefaultIfEmpty<TSource> (this System.Collections.Generic.IEnumerable<TSource> source);

Parâmetros de tipo

TSource

O tipo dos elementos de source.

Parâmetros

source
IEnumerable<TSource>

A sequência para a qual retornar um valor padrão se ela estiver vazia.

Retornos

IEnumerable<TSource>

Um objeto IEnumerable<T> que contém o valor padrão do tipo TSource se source estiver vazio; caso contrário, source.

Exceções

source é null.

Exemplos

Os exemplos de código a seguir demonstram como usar DefaultIfEmpty<TSource>(IEnumerable<TSource>) para fornecer um valor padrão caso a sequência de origem esteja vazia.

Este exemplo usa uma sequência não vazia.

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

public static void DefaultIfEmptyEx1()
{
    List<Pet> pets =
        new List<Pet>{ new Pet { Name="Barley", Age=8 },
                       new Pet { Name="Boots", Age=4 },
                       new Pet { Name="Whiskers", Age=1 } };

    foreach (Pet pet in pets.DefaultIfEmpty())
    {
        Console.WriteLine(pet.Name);
    }
}

/*
 This code produces the following output:

 Barley
 Boots
 Whiskers
*/

Este exemplo usa uma sequência vazia.

List<int> numbers = new List<int>();

foreach (int number in numbers.DefaultIfEmpty())
{
    Console.WriteLine(number);
}

/*
 This code produces the following output:

 0
*/

Comentários

Esse método é implementado usando a execução adiada. O valor de retorno imediato é um objeto que armazena todas as informações necessárias para executar a ação. A consulta representada por esse método não é executada até que o objeto seja enumerado chamando seu método GetEnumerator diretamente ou usando foreach em C# ou For Each no Visual Basic.

O valor padrão para tipos de referência e anuláveis é null.

Esse método pode ser usado para produzir uma junção externa esquerda quando é combinado com o método GroupJoin.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource)

Origem:
DefaultIfEmpty.cs
Origem:
DefaultIfEmpty.cs
Origem:
DefaultIfEmpty.cs

Retorna os elementos da sequência especificada ou o valor especificado em uma coleção singleton se a sequência estiver vazia.

public static System.Collections.Generic.IEnumerable<TSource> DefaultIfEmpty<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, TSource defaultValue);

Parâmetros de tipo

TSource

O tipo dos elementos de source.

Parâmetros

source
IEnumerable<TSource>

A sequência para a qual retornar o valor especificado se ele estiver vazio.

defaultValue
TSource

O valor a ser retornado se a sequência estiver vazia.

Retornos

IEnumerable<TSource>

Um IEnumerable<T> que contém defaultValue se source estiver vazio; caso contrário, source.

Exemplos

O exemplo de código a seguir demonstra como usar o método DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) e especificar um valor padrão. A primeira sequência não está vazia e a segunda sequência está vazia.

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

public static void DefaultIfEmptyEx2()
{
    Pet defaultPet = new Pet { Name = "Default Pet", Age = 0 };

    List<Pet> pets1 =
        new List<Pet>{ new Pet { Name="Barley", Age=8 },
                       new Pet { Name="Boots", Age=4 },
                       new Pet { Name="Whiskers", Age=1 } };

    foreach (Pet pet in pets1.DefaultIfEmpty(defaultPet))
    {
        Console.WriteLine("Name: {0}", pet.Name);
    }

    List<Pet> pets2 = new List<Pet>();

    foreach (Pet pet in pets2.DefaultIfEmpty(defaultPet))
    {
        Console.WriteLine("\nName: {0}", pet.Name);
    }
}

/*
 This code produces the following output:

 Name: Barley
 Name: Boots
 Name: Whiskers

 Name: Default Pet
*/

Comentários

Esse método é implementado usando a execução adiada. O valor de retorno imediato é um objeto que armazena todas as informações necessárias para executar a ação. A consulta representada por esse método não é executada até que o objeto seja enumerado chamando seu método GetEnumerator diretamente ou usando foreach em C# ou For Each no Visual Basic.

Esse método pode ser usado para produzir uma junção externa esquerda quando é combinado com o método GroupJoin.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0