Enumerable.DefaultIfEmpty Método
Definição
Retornará os elementos em um IEnumerable<T> ou uma coleção de singletons com valor padrão se a sequência estiver vazia.Returns the elements of an IEnumerable<T>, or a default valued singleton collection if the sequence is empty.
Sobrecargas
DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) |
Retorna os elementos da sequência especificada ou o valor especificado em uma coleção de singletons se a sequência está vazia.Returns the elements of the specified sequence or the specified value in a singleton collection if the sequence is empty. |
DefaultIfEmpty<TSource>(IEnumerable<TSource>) |
Retornará os elementos da sequência especificada ou o valor padrão do parâmetro de tipo em uma coleção de singletons se a sequência estiver vazia.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>(IEnumerable<TSource>, TSource)
Retorna os elementos da sequência especificada ou o valor especificado em uma coleção de singletons se a sequência está vazia.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::Collections::Generic::IEnumerable<TSource> ^ DefaultIfEmpty(System::Collections::Generic::IEnumerable<TSource> ^ source, TSource defaultValue);
public static System.Collections.Generic.IEnumerable<TSource> DefaultIfEmpty<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, TSource defaultValue);
static member DefaultIfEmpty : seq<'Source> * 'Source -> seq<'Source>
<Extension()>
Public Function DefaultIfEmpty(Of TSource) (source As IEnumerable(Of TSource), defaultValue As TSource) As IEnumerable(Of TSource)
Parâmetros de tipo
- TSource
O tipo dos elementos de source
.The type of the elements of source
.
Parâmetros
- source
- IEnumerable<TSource>
A sequência para a qual será retornado o valor especificado se ela estiver vazia.The sequence to return the specified value for if it is empty.
- defaultValue
- TSource
O valor a ser retornado se a sequência estiver vazia.The value to return if the sequence is empty.
Retornos
- IEnumerable<TSource>
Um IEnumerable<T> que contém defaultValue
se source
está vazio; caso contrário, source
.An IEnumerable<T> that contains defaultValue
if source
is empty; otherwise, source
.
Exemplos
O exemplo de código a seguir demonstra como usar o DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) método e especificar um valor padrão.The following code example demonstrates how to use the DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) method and specify a default value. A primeira sequência não está vazia e a segunda sequência está vazia.The first sequence is not empty and the second sequence is empty.
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
*/
Structure Pet
Public Name As String
Public Age As Integer
End Structure
Sub DefaultIfEmptyEx2()
' Create a Pet object to use as the default value.
Dim defaultPet As New Pet With {.Name = "Default Pet", .Age = 0}
' Create a List of Pet objects.
Dim pets1 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}})
Dim output1 As New System.Text.StringBuilder
' Enumerate the items in the list, calling DefaultIfEmpty()
' with a default value.
For Each pet As Pet In pets1.DefaultIfEmpty(defaultPet)
output1.AppendLine("Name: " & pet.Name)
Next
' Display the output.
Console.WriteLine(output1.ToString())
' Create an empty List.
Dim pets2 As New List(Of Pet)
Dim output2 As New System.Text.StringBuilder
' Enumerate the items in the list, calling DefaultIfEmpty()
' with a default value.
For Each pet As Pet In pets2.DefaultIfEmpty(defaultPet)
output2.AppendLine("Name: " & pet.Name)
Next
' Display the output.
Console.WriteLine(output2.ToString())
End Sub
' 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.This method is implemented by using deferred execution. O valor de retorno imediato é um objeto que armazena todas as informações necessárias para executar a ação.The immediate return value is an object that stores all the information that is required to perform the action. A consulta representada por esse método não é executada até que o objeto seja enumerado chamando o GetEnumerator
método diretamente ou usando o foreach
no Visual C# ou For Each
no Visual Basic.The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator
method directly or by using foreach
in Visual C# or For Each
in Visual Basic.
Esse método pode ser usado para produzir uma junção externa esquerda quando combinado com o GroupJoin método).This method can be used to produce a left outer join when it is combined with the GroupJoin) method.
Confira também
Aplica-se a
DefaultIfEmpty<TSource>(IEnumerable<TSource>)
Retornará os elementos da sequência especificada ou o valor padrão do parâmetro de tipo em uma coleção de singletons se a sequência estiver vazia.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::Collections::Generic::IEnumerable<TSource> ^ DefaultIfEmpty(System::Collections::Generic::IEnumerable<TSource> ^ source);
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);
static member DefaultIfEmpty : seq<'Source> -> seq<'Source>
<Extension()>
Public Function DefaultIfEmpty(Of TSource) (source As IEnumerable(Of TSource)) As IEnumerable(Of TSource)
Parâmetros de tipo
- TSource
O tipo dos elementos de source
.The type of the elements of source
.
Parâmetros
- source
- IEnumerable<TSource>
A sequência para a qual será retornado um valor padrão se ela estiver vazia.The sequence to return a default value for if it is empty.
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
.An IEnumerable<T> object that contains the default value for the TSource
type if source
is empty; otherwise, source
.
Exceções
source
é null
.source
is null
.
Exemplos
Os exemplos de código a seguir demonstram como usar DefaultIfEmpty<TSource>(IEnumerable<TSource>) o para fornecer um valor padrão no caso de a sequência de origem estar vazia.The following code examples demonstrate how to use DefaultIfEmpty<TSource>(IEnumerable<TSource>) to provide a default value in case the source sequence is empty.
Este exemplo usa uma sequência não vazia.This example uses a non-empty sequence.
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
*/
Structure Pet
Public Name As String
Public Age As Integer
End Structure
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}})
Dim output As New System.Text.StringBuilder
' Iterate through the items in the List, calling DefaultIfEmpty().
For Each pet As Pet In pets.DefaultIfEmpty()
output.AppendLine(pet.Name)
Next
' Display the output.
Console.WriteLine(output.ToString())
End Sub
' This code produces the following output:
'
' Barley
' Boots
' Whiskers
Este exemplo usa uma sequência vazia.This example uses an empty sequence.
List<int> numbers = new List<int>();
foreach (int number in numbers.DefaultIfEmpty())
{
Console.WriteLine(number);
}
/*
This code produces the following output:
0
*/
' Create an empty List.
Dim numbers As New List(Of Integer)()
Dim output As New System.Text.StringBuilder
' Iterate through the items in the List, calling DefaultIfEmpty().
For Each number As Integer In numbers.DefaultIfEmpty()
output.AppendLine(number)
Next
' Display the output.
Console.WriteLine(output.ToString())
' This code produces the following output:
'
' 0
Comentários
Esse método é implementado usando a execução adiada.This method is implemented by using deferred execution. O valor de retorno imediato é um objeto que armazena todas as informações necessárias para executar a ação.The immediate return value is an object that stores all the information that is required to perform the action. A consulta representada por esse método não é executada até que o objeto seja enumerado chamando o GetEnumerator
método diretamente ou usando o foreach
no Visual C# ou For Each
no Visual Basic.The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator
method directly or by using foreach
in Visual C# or For Each
in Visual Basic.
O valor padrão para referência e tipos anuláveis é null
.The default value for reference and nullable types is null
.
Esse método pode ser usado para produzir uma junção externa esquerda quando combinado com o GroupJoin método).This method can be used to produce a left outer join when it is combined with the GroupJoin) method.