Queryable.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 in een reeks of een standaardwaarde singletonverzameling als de reeks leeg is.
Overloads
| Name | Description |
|---|---|
| DefaultIfEmpty<TSource>(IQueryable<TSource>) |
Retourneert de elementen van de opgegeven reeks of de standaardwaarde van de typeparameter in een singletonverzameling als de reeks leeg is. |
| DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) |
Retourneert de elementen van de opgegeven reeks of de opgegeven waarde in een singletonverzameling als de reeks leeg is. |
DefaultIfEmpty<TSource>(IQueryable<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::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)
Type parameters
- TSource
Het type van de elementen van source.
Parameters
- source
- IQueryable<TSource>
Hiermee IQueryable<T> wordt een standaardwaarde geretourneerd voor als deze leeg is.
Retouren
Een IQueryable<T> met (TSource) als defaultsource deze leeg is; anderssource.
Uitzonderingen
source is null.
Voorbeelden
In de volgende codevoorbeelden ziet u hoe DefaultIfEmpty<TSource>(IQueryable<TSource>) u een standaardwaarde kunt opgeven voor het geval de bronreeks leeg is.
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
Opmerkingen
De DefaultIfEmpty<TSource>(IQueryable<TSource>) methode genereert een MethodCallExpression die zichzelf aanroept DefaultIfEmpty<TSource>(IQueryable<TSource>) als een samengestelde algemene methode. Vervolgens wordt de MethodCallExpression methode doorgegeven aan de CreateQuery<TElement>(Expression) methode van de IQueryProvider vertegenwoordigd door de Provider eigenschap van de source parameter.
Het querygedrag dat optreedt als gevolg van het uitvoeren van een expressiestructuur die aanroept DefaultIfEmpty<TSource>(IQueryable<TSource>) , is afhankelijk van de implementatie van het type source parameter. Het verwachte gedrag is dat het retourneert source als het niet leeg is. Anders wordt er een IQueryable<T> geretourneerd die een bevat default(TSource).
Van toepassing op
DefaultIfEmpty<TSource>(IQueryable<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::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)
Type parameters
- TSource
Het type van de elementen van source.
Parameters
- source
- IQueryable<TSource>
Hiermee IQueryable<T> wordt de opgegeven waarde geretourneerd voor als deze leeg is.
- defaultValue
- TSource
De waarde die moet worden geretourneerd als de reeks leeg is.
Retouren
Een IQueryable<T> die leeg defaultValuesource is, anders source.
Uitzonderingen
source is null.
Voorbeelden
In het volgende codevoorbeeld ziet u een situatie waarin het handig is om een LINQ-query aan te roepen DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) . In dit voorbeeld wordt een standaardwaarde doorgegeven DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) .
// 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.
Opmerkingen
De DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) methode genereert een MethodCallExpression die zichzelf aanroept DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) als een samengestelde algemene methode. Vervolgens wordt de MethodCallExpression methode doorgegeven aan de CreateQuery<TElement>(Expression) methode van de IQueryProvider vertegenwoordigd door de Provider eigenschap van de source parameter.
Het querygedrag dat optreedt als gevolg van het uitvoeren van een expressiestructuur die aanroept DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) , is afhankelijk van de implementatie van het type source parameter. Het verwachte gedrag is dat het retourneert source als het niet leeg is. Anders wordt er een IQueryable<T> geretourneerd die een bevat defaultValue.