Enumerable.DefaultIfEmpty Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Retourneert de elementen van een IEnumerable<T>of een standaardwaarde singleton-verzameling als de reeks leeg is.
Overloads
| Name | Description |
|---|---|
| DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) |
Retourneert de elementen van de opgegeven reeks of de opgegeven waarde in een singletonverzameling als de reeks leeg is. |
| DefaultIfEmpty<TSource>(IEnumerable<TSource>) |
Retourneert de elementen van de opgegeven reeks of de standaardwaarde van de typeparameter in een singletonverzameling als de reeks leeg is. |
DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource)
Retourneert de elementen van de opgegeven reeks of de opgegeven waarde in een singletonverzameling als de reeks leeg is.
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)
Type parameters
- TSource
Het type van de elementen van source.
Parameters
- source
- IEnumerable<TSource>
De reeks voor het retourneren van de opgegeven waarde als deze leeg is.
- defaultValue
- TSource
De waarde die moet worden geretourneerd als de reeks leeg is.
Retouren
Een IEnumerable<T> die leeg defaultValuesource is, anders source.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u de DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) methode gebruikt en een standaardwaarde opgeeft. De eerste reeks is niet leeg en de tweede reeks is leeg.
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
Opmerkingen
Deze methode wordt geïmplementeerd met behulp van de uitgestelde uitvoering. De onmiddellijke retourwaarde is een object waarin alle informatie wordt opgeslagen die nodig is om de actie uit te voeren. De query die door deze methode wordt vertegenwoordigd, wordt pas uitgevoerd nadat het object is geïnventariseerd door de methode GetEnumerator rechtstreeks aan te roepen of door foreach te gebruiken in C# of For Each in Visual Basic.
Deze methode kan worden gebruikt om een left outer join te produceren wanneer deze wordt gecombineerd met de GroupJoin methode.
Zie ook
Van toepassing op
DefaultIfEmpty<TSource>(IEnumerable<TSource>)
Retourneert de elementen van de opgegeven reeks of de standaardwaarde van de typeparameter in een singletonverzameling als de reeks leeg is.
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);
static member DefaultIfEmpty : seq<'Source> -> seq<'Source>
<Extension()>
Public Function DefaultIfEmpty(Of TSource) (source As IEnumerable(Of TSource)) As IEnumerable(Of TSource)
Type parameters
- TSource
Het type van de elementen van source.
Parameters
- source
- IEnumerable<TSource>
De reeks waarvoor een standaardwaarde moet worden geretourneerd als deze leeg is.
Retouren
Een IEnumerable<T> object met de standaardwaarde voor het TSource type als source dit leeg is, sourceanders.
Uitzonderingen
source is null.
Voorbeelden
In de volgende codevoorbeelden ziet u hoe DefaultIfEmpty<TSource>(IEnumerable<TSource>) u een standaardwaarde kunt opgeven voor het geval de bronreeks leeg is.
In dit voorbeeld wordt een niet-lege reeks gebruikt.
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
In dit voorbeeld wordt een lege reeks gebruikt.
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
Opmerkingen
Deze methode wordt geïmplementeerd met behulp van de uitgestelde uitvoering. De onmiddellijke retourwaarde is een object waarin alle informatie wordt opgeslagen die nodig is om de actie uit te voeren. De query die door deze methode wordt vertegenwoordigd, wordt pas uitgevoerd nadat het object is geïnventariseerd door de methode GetEnumerator rechtstreeks aan te roepen of door foreach te gebruiken in C# of For Each in Visual Basic.
De standaardwaarde voor verwijzings- en null-typen is null.
Deze methode kan worden gebruikt om een left outer join te produceren wanneer deze wordt gecombineerd met de GroupJoin methode.