Enumerable.DefaultIfEmpty Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Restituisce gli elementi di un IEnumerable<T>oppure un insieme singleton con valori predefinito se la sequenza è vuota.
Overload
DefaultIfEmpty<TSource>(IEnumerable<TSource>) |
Restituisce gli elementi della sequenza specificata o il valore predefinito del parametro di tipo in un insieme singleton se la sequenza è vuota. |
DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) |
Restituisce gli elementi della sequenza specificata o il valore specificato in una raccolta singleton se la sequenza è vuota. |
DefaultIfEmpty<TSource>(IEnumerable<TSource>)
- Origine:
- DefaultIfEmpty.cs
- Origine:
- DefaultIfEmpty.cs
- Origine:
- DefaultIfEmpty.cs
Restituisce gli elementi della sequenza specificata o il valore predefinito del parametro di tipo in un insieme singleton se la sequenza è vuota.
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)
Parametri di tipo
- TSource
Tipo degli elementi di source
.
Parametri
- source
- IEnumerable<TSource>
Sequenza per cui restituire un valore predefinito se è vuoto.
Restituisce
Oggetto IEnumerable<T> che contiene il valore predefinito per il tipo di TSource
se source
è vuoto; in caso contrario, source
.
Eccezioni
source
è null
.
Esempio
Gli esempi di codice seguenti illustrano come usare DefaultIfEmpty<TSource>(IEnumerable<TSource>) per fornire un valore predefinito nel caso in cui la sequenza di origine sia vuota.
In questo esempio viene utilizzata una sequenza non vuota.
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 questo esempio viene utilizzata una sequenza vuota.
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
Commenti
Questo metodo viene implementato usando l'esecuzione posticipata. Il valore restituito immediato è un oggetto che archivia tutte le informazioni necessarie per eseguire l'azione. La query rappresentata da questo metodo non viene eseguita finché l'oggetto non viene enumerato chiamando direttamente il relativo metodo GetEnumerator
o usando foreach
in C# o For Each
in Visual Basic.
Il valore predefinito per i tipi reference e nullable è null
.
Questo metodo può essere usato per produrre un left outer join quando viene combinato con il metodo GroupJoin.
Vedi anche
- operazioni di join (C#)
- operazioni di join
(Visual Basic)
Si applica a
DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource)
- Origine:
- DefaultIfEmpty.cs
- Origine:
- DefaultIfEmpty.cs
- Origine:
- DefaultIfEmpty.cs
Restituisce gli elementi della sequenza specificata o il valore specificato in una raccolta singleton se la sequenza è vuota.
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)
Parametri di tipo
- TSource
Tipo degli elementi di source
.
Parametri
- source
- IEnumerable<TSource>
Sequenza per cui restituire il valore specificato per se è vuoto.
- defaultValue
- TSource
Valore da restituire se la sequenza è vuota.
Restituisce
Un IEnumerable<T> che contiene defaultValue
se source
è vuoto; in caso contrario, source
.
Esempio
Nell'esempio di codice seguente viene illustrato come usare il metodo DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) e specificare un valore predefinito. La prima sequenza non è vuota e la seconda sequenza è vuota.
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
Commenti
Questo metodo viene implementato usando l'esecuzione posticipata. Il valore restituito immediato è un oggetto che archivia tutte le informazioni necessarie per eseguire l'azione. La query rappresentata da questo metodo non viene eseguita finché l'oggetto non viene enumerato chiamando direttamente il relativo metodo GetEnumerator
o usando foreach
in C# o For Each
in Visual Basic.
Questo metodo può essere usato per produrre un left outer join quando viene combinato con il metodo GroupJoin.
Vedi anche
- operazioni di join (C#)
- operazioni di join
(Visual Basic)