Queryable.DefaultIfEmpty Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt die Elemente in einer Sequenz oder einer Standardwert-Singletonauflistung zurück, wenn die Sequenz leer ist.
Überlädt
| Name | Beschreibung |
|---|---|
| DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) |
Gibt die Elemente der angegebenen Sequenz oder den angegebenen Wert in einer Singleton -Auflistung zurück, wenn die Sequenz leer ist. |
| DefaultIfEmpty<TSource>(IQueryable<TSource>) |
Gibt die Elemente der angegebenen Sequenz oder des Standardwerts des Typparameters in einer Singleton -Auflistung zurück, wenn die Sequenz leer ist. |
DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource)
- Quelle:
- Queryable.cs
- Quelle:
- Queryable.cs
- Quelle:
- Queryable.cs
- Quelle:
- Queryable.cs
- Quelle:
- Queryable.cs
Gibt die Elemente der angegebenen Sequenz oder den angegebenen Wert in einer Singleton -Auflistung zurück, wenn die Sequenz leer ist.
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);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
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>
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
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)
Typparameter
- TSource
Der Typ der Elemente von source.
Parameter
- source
- IQueryable<TSource>
Gibt IQueryable<T> den angegebenen Wert zurück, wenn er leer ist.
- defaultValue
- TSource
Der Wert, der zurückgegeben werden soll, wenn die Sequenz leer ist.
Gibt zurück
Eine IQueryable<T> , die enthält defaultValue , wenn source sie leer ist; andernfalls source.
- Attribute
Ausnahmen
source ist null.
Beispiele
Das folgende Codebeispiel zeigt eine Situation, in der es nützlich ist, eine LINQ-Abfrage aufzurufen DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) . In diesem Beispiel wird ein Standardwert übergeben 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.
Hinweise
Die DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) Methode generiert eine MethodCallExpression , die den Aufruf DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) selbst als konstruierte generische Methode darstellt. Anschließend wird die MethodCallExpression Methode der CreateQuery<TElement>(Expression)IQueryProvider durch die Provider Eigenschaft des source Parameters dargestellten Methode übergeben.
Das Abfrageverhalten, das als Ergebnis der Ausführung einer Ausdrucksstruktur auftritt, die aufruft DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) , hängt von der Implementierung des Typs des source Parameters ab. Das erwartete Verhalten besteht darin, dass es zurückgegeben source wird, wenn es nicht leer ist. Andernfalls wird ein enthaltenes IQueryable<T> Element zurückgegeben defaultValue.
Gilt für:
DefaultIfEmpty<TSource>(IQueryable<TSource>)
- Quelle:
- Queryable.cs
- Quelle:
- Queryable.cs
- Quelle:
- Queryable.cs
- Quelle:
- Queryable.cs
- Quelle:
- Queryable.cs
Gibt die Elemente der angegebenen Sequenz oder des Standardwerts des Typparameters in einer Singleton -Auflistung zurück, wenn die Sequenz leer ist.
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);
public static System.Linq.IQueryable<TSource?> DefaultIfEmpty<TSource>(this System.Linq.IQueryable<TSource> source);
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")]
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>
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Enumerating collections as IQueryable can require creating new generic types or methods, which requires creating code at runtime. This may not work when AOT compiling.")>]
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)
Typparameter
- TSource
Der Typ der Elemente von source.
Parameter
- source
- IQueryable<TSource>
Gibt IQueryable<T> einen Standardwert für den Wert zurück, wenn er leer ist.
Gibt zurück
Ein IQueryable<T> Enthält default(TSource) wenn source leer, andernfalls source.
- Attribute
Ausnahmen
source ist null.
Beispiele
Die folgenden Codebeispiele veranschaulichen, wie Sie DefaultIfEmpty<TSource>(IQueryable<TSource>) einen Standardwert angeben können, falls die Quellsequenz leer ist.
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
Hinweise
Die DefaultIfEmpty<TSource>(IQueryable<TSource>) Methode generiert eine MethodCallExpression , die den Aufruf DefaultIfEmpty<TSource>(IQueryable<TSource>) selbst als konstruierte generische Methode darstellt. Anschließend wird die MethodCallExpression Methode der CreateQuery<TElement>(Expression)IQueryProvider durch die Provider Eigenschaft des source Parameters dargestellten Methode übergeben.
Das Abfrageverhalten, das als Ergebnis der Ausführung einer Ausdrucksstruktur auftritt, die aufruft DefaultIfEmpty<TSource>(IQueryable<TSource>) , hängt von der Implementierung des Typs des source Parameters ab. Das erwartete Verhalten besteht darin, dass es zurückgegeben source wird, wenn es nicht leer ist. Andernfalls wird ein enthaltenes IQueryable<T> Element zurückgegeben default(TSource).