Queryable.FirstOrDefault 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 das erste Element einer Sequenz oder einen Standardwert zurück, wenn kein Element gefunden wird
Überlädt
FirstOrDefault<TSource>(IQueryable<TSource>) |
Gibt das erste Element einer Sequenz oder einen Standardwert zurück, wenn die Sequenz keine Elemente enthält. |
FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) |
Gibt das erste Element einer Sequenz zurück, das eine angegebene Bedingung erfüllt, oder einen Standardwert, wenn ein solches Element nicht gefunden wird. |
FirstOrDefault<TSource>(IQueryable<TSource>, TSource) |
Gibt das erste Element einer Sequenz oder einen Standardwert zurück, wenn die Sequenz keine Elemente enthält. |
FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, TSource) |
Gibt das erste Element der Sequenz zurück, das eine Bedingung erfüllt, oder einen Standardwert, wenn ein solches Element nicht gefunden wird. |
FirstOrDefault<TSource>(IQueryable<TSource>)
- Quelle:
- Queryable.cs
- Quelle:
- Queryable.cs
- Quelle:
- Queryable.cs
Gibt das erste Element einer Sequenz oder einen Standardwert zurück, wenn die Sequenz keine Elemente enthält.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource FirstOrDefault(System::Linq::IQueryable<TSource> ^ source);
public static TSource FirstOrDefault<TSource> (this System.Linq.IQueryable<TSource> source);
public static TSource? FirstOrDefault<TSource> (this System.Linq.IQueryable<TSource> source);
static member FirstOrDefault : System.Linq.IQueryable<'Source> -> 'Source
<Extension()>
Public Function FirstOrDefault(Of TSource) (source As IQueryable(Of TSource)) As TSource
Typparameter
- TSource
Der Typ der Elemente von source
.
Parameter
- source
- IQueryable<TSource>
Das IQueryable<T>, dessen erstes Element zurückgegeben werden soll
Gibt zurück
default
(TSource
), wenn source
leer ist, andernfalls das erste Element in source
Ausnahmen
source
ist null
.
Beispiele
Im folgenden Codebeispiel wird die Verwendung FirstOrDefault<TSource>(IQueryable<TSource>) für eine leere Sequenz veranschaulicht.
// Create an empty array.
int[] numbers = { };
// Get the first item in the array, or else the
// default value for type int (0).
int first = numbers.AsQueryable().FirstOrDefault();
Console.WriteLine(first);
/*
This code produces the following output:
0
*/
' Create an empty array.
Dim numbers() As Integer = {}
' Get the first item in the array, or else the
' default value for type int, which is 0.
Dim first As Integer = numbers.AsQueryable().FirstOrDefault()
MsgBox(first)
' This code produces the following output:
' 0
Manchmal ist der Wert von default(TSource)
nicht der Standardwert, den Sie verwenden möchten, wenn die Auflistung keine Elemente enthält. Anstatt das Ergebnis auf den unerwünschten Standardwert zu überprüfen und ihn dann bei Bedarf zu ändern, können Sie die DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) -Methode verwenden, um den Standardwert anzugeben, den Sie verwenden möchten, wenn die Auflistung leer ist. Rufen Sie dann auf First<TSource>(IQueryable<TSource>) , um das erste Element abzurufen. Im folgenden Codebeispiel werden beide Techniken verwendet, um den Standardwert 1 zu erhalten, wenn eine Auflistung von numerischen Monaten leer ist. Da der Standardwert für eine ganze Zahl 0 ist, was keinem Monat entspricht, muss der Standardwert stattdessen als 1 angegeben werden. Die erste Ergebnisvariable wird nach Abschluss der Abfrage auf den unerwünschten Standardwert überprüft. Die zweite Ergebnisvariable wird durch Aufrufen DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) abgerufen, um den Standardwert 1 anzugeben.
List<int> months = new List<int> { };
// Setting the default value to 1 after the query.
int firstMonth1 = months.AsQueryable().FirstOrDefault();
if (firstMonth1 == 0)
{
firstMonth1 = 1;
}
Console.WriteLine("The value of the firstMonth1 variable is {0}", firstMonth1);
// Setting the default value to 1 by using DefaultIfEmpty() in the query.
int firstMonth2 = months.AsQueryable().DefaultIfEmpty(1).First();
Console.WriteLine("The value of the firstMonth2 variable is {0}", firstMonth2);
/*
This code produces the following output:
The value of the firstMonth1 variable is 1
The value of the firstMonth2 variable is 1
*/
Dim months As New List(Of Integer)(New Integer() {})
' Setting the default value to 1 after the query.
Dim firstMonth1 As Integer = months.AsQueryable().FirstOrDefault()
If firstMonth1 = 0 Then
firstMonth1 = 1
End If
MsgBox(String.Format("The value of the firstMonth1 variable is {0}", firstMonth1))
' Setting the default value to 1 by using DefaultIfEmpty() in the query.
Dim firstMonth2 As Integer = months.AsQueryable().DefaultIfEmpty(1).First()
MsgBox(String.Format("The value of the firstMonth2 variable is {0}", firstMonth2))
' This code produces the following output:
'
' The value of the firstMonth1 variable is 1
' The value of the firstMonth2 variable is 1
Hinweise
Die FirstOrDefault<TSource>(IQueryable<TSource>) -Methode generiert eine MethodCallExpression , die den Aufruf FirstOrDefault<TSource>(IQueryable<TSource>) selbst als konstruierte generische Methode darstellt. Anschließend wird an MethodCallExpression die Execute<TResult>(Expression) -Methode des übergeben, das IQueryProvider durch die Provider -Eigenschaft des source
-Parameters dargestellt wird.
Das Abfrageverhalten, das als Ergebnis der Ausführung einer Ausdrucksstruktur auftritt, die den Aufruf FirstOrDefault<TSource>(IQueryable<TSource>) darstellt, hängt von der Implementierung des Typs des source
Parameters ab. Das erwartete Verhalten besteht darin, dass das erste Element in oder ein Standardwert zurückgegeben source
wird, wenn source
leer ist.
Die FirstOrDefault -Methode bietet keine Möglichkeit, den zurückzugebenden Standardwert anzugeben, wenn source
leer ist. Wenn Sie einen anderen Standardwert als default(TSource)
angeben möchten, verwenden Sie die DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) -Methode, wie im Abschnitt Beispiel beschrieben.
Gilt für:
FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)
- Quelle:
- Queryable.cs
- Quelle:
- Queryable.cs
- Quelle:
- Queryable.cs
Gibt das erste Element einer Sequenz zurück, das eine angegebene Bedingung erfüllt, oder einen Standardwert, wenn ein solches Element nicht gefunden wird.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource FirstOrDefault(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, bool> ^> ^ predicate);
public static TSource FirstOrDefault<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate);
public static TSource? FirstOrDefault<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate);
static member FirstOrDefault : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, bool>> -> 'Source
<Extension()>
Public Function FirstOrDefault(Of TSource) (source As IQueryable(Of TSource), predicate As Expression(Of Func(Of TSource, Boolean))) As TSource
Typparameter
- TSource
Der Typ der Elemente von source
.
Parameter
- source
- IQueryable<TSource>
Ein IQueryable<T>, aus dem ein Element zurückgegeben werden soll
- predicate
- Expression<Func<TSource,Boolean>>
Eine Funktion, mit der jedes Element auf eine Bedingung überprüft wird.
Gibt zurück
default
(TSource
), wenn source
leer ist oder wenn kein Element die von predicate
angegebene Überprüfung besteht. Andernfalls das erste Element in source
, das die von predicate
angegebene Überprüfung besteht.
Ausnahmen
source
oder predicate
ist null
.
Beispiele
Im folgenden Codebeispiel wird die Verwendung FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) durch Übergeben eines Prädikats veranschaulicht. In der zweiten Abfrage gibt es kein Element in der Sequenz, das die Bedingung erfüllt.
string[] names = { "Hartono, Tommy", "Adams, Terry",
"Andersen, Henriette Thaulow",
"Hedlund, Magnus", "Ito, Shu" };
// Get the first string in the array that is longer
// than 20 characters, or the default value for type
// string (null) if none exists.
string firstLongName =
names.AsQueryable().FirstOrDefault(name => name.Length > 20);
Console.WriteLine("The first long name is '{0}'.", firstLongName);
// Get the first string in the array that is longer
// than 30 characters, or the default value for type
// string (null) if none exists.
string firstVeryLongName =
names.AsQueryable().FirstOrDefault(name => name.Length > 30);
Console.WriteLine(
"There is {0} name that is longer than 30 characters.",
string.IsNullOrEmpty(firstVeryLongName) ? "NOT a" : "a");
/*
This code produces the following output:
The first long name is 'Andersen, Henriette Thaulow'.
There is NOT a name that is longer than 30 characters.
*/
Dim names() As String = {"Hartono, Tommy", "Adams, Terry", _
"Andersen, Henriette Thaulow", _
"Hedlund, Magnus", "Ito, Shu"}
' Get the first string in the array that is longer
' than 20 characters, or the default value for type
' string (null) if none exists.
Dim firstLongName As String = _
names.AsQueryable().FirstOrDefault(Function(name) name.Length > 20)
MsgBox(String.Format("The first long name is '{0}'.", firstLongName))
' Get the first string in the array that is longer
' than 30 characters, or the default value for type
' string (null) if none exists.
Dim firstVeryLongName As String = _
names.AsQueryable().FirstOrDefault(Function(name) name.Length > 30)
MsgBox(String.Format( _
"There is {0} name that is longer than 30 characters.", _
IIf(String.IsNullOrEmpty(firstVeryLongName), "NOT a", "a")))
' This code produces the following output:
'
' The first long name is 'Andersen, Henriette Thaulow'.
' There is NOT a name that is longer than 30 characters.
Hinweise
Diese Methode verfügt über mindestens einen Parameter vom Typ Expression<TDelegate> , dessen Typargument einer der Func<T,TResult> Typen ist. Für diese Parameter können Sie einen Lambdaausdruck übergeben, der zu einem Expression<TDelegate>kompiliert wird.
Die FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) -Methode generiert eine MethodCallExpression , die den Aufruf FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) selbst als konstruierte generische Methode darstellt. Anschließend wird an MethodCallExpression die Execute<TResult>(Expression) -Methode des übergeben, das IQueryProvider durch die Provider -Eigenschaft des source
-Parameters dargestellt wird.
Das Abfrageverhalten, das als Ergebnis der Ausführung einer Ausdrucksstruktur auftritt, die den Aufruf FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) darstellt, hängt von der Implementierung des Typs des source
Parameters ab. Das erwartete Verhalten besteht darin, dass das erste Element in source
zurückgegeben wird, das die Bedingung in predicate
erfüllt, oder einen Standardwert, wenn kein Element die Bedingung erfüllt.
Gilt für:
FirstOrDefault<TSource>(IQueryable<TSource>, TSource)
- Quelle:
- Queryable.cs
- Quelle:
- Queryable.cs
- Quelle:
- Queryable.cs
Gibt das erste Element einer Sequenz oder einen Standardwert zurück, wenn die Sequenz keine Elemente enthält.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource FirstOrDefault(System::Linq::IQueryable<TSource> ^ source, TSource defaultValue);
public static TSource FirstOrDefault<TSource> (this System.Linq.IQueryable<TSource> source, TSource defaultValue);
static member FirstOrDefault : System.Linq.IQueryable<'Source> * 'Source -> 'Source
<Extension()>
Public Function FirstOrDefault(Of TSource) (source As IQueryable(Of TSource), defaultValue As TSource) As TSource
Typparameter
- TSource
Der Typ der Elemente von source
.
Parameter
- source
- IQueryable<TSource>
Das IEnumerable<T>, dessen erstes Element zurückgegeben werden soll
- defaultValue
- TSource
Der Standardwert, der zurückgegeben werden soll, wenn die Sequenz leer ist.
Gibt zurück
defaultValue
, wenn source
leer ist, andernfalls das erste Element in source
.
Ausnahmen
source
ist null
Gilt für:
FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, TSource)
- Quelle:
- Queryable.cs
- Quelle:
- Queryable.cs
- Quelle:
- Queryable.cs
Gibt das erste Element der Sequenz zurück, das eine Bedingung erfüllt, oder einen Standardwert, wenn ein solches Element nicht gefunden wird.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource FirstOrDefault(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, bool> ^> ^ predicate, TSource defaultValue);
public static TSource FirstOrDefault<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate, TSource defaultValue);
static member FirstOrDefault : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, bool>> * 'Source -> 'Source
<Extension()>
Public Function FirstOrDefault(Of TSource) (source As IQueryable(Of TSource), predicate As Expression(Of Func(Of TSource, Boolean)), defaultValue As TSource) As TSource
Typparameter
- TSource
Der Typ der Elemente von source
.
Parameter
- source
- IQueryable<TSource>
Ein IEnumerable<T>, aus dem ein Element zurückgegeben werden soll
- predicate
- Expression<Func<TSource,Boolean>>
Eine Funktion, mit der jedes Element auf eine Bedingung überprüft wird.
- defaultValue
- TSource
Der Standardwert, der zurückgegeben werden soll, wenn die Sequenz leer ist.
Gibt zurück
defaultValue
, wenn source
leer ist oder wenn kein Element den von predicate
angegebenen Test besteht, andernfalls das erste Element in source
, das den durch predicate
angegebenen Test besteht.
Ausnahmen
source
oder predicate
ist null
.