Queryable.FirstOrDefault Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Returnerar det första elementet i en sekvens eller ett standardvärde om inget element hittas.
Överlagringar
| Name | Description |
|---|---|
| FirstOrDefault<TSource>(IQueryable<TSource>, TSource) |
Returnerar det första elementet i en sekvens eller ett standardvärde om sekvensen inte innehåller några element. |
| FirstOrDefault<TSource>(IQueryable<TSource>) |
Returnerar det första elementet i en sekvens eller ett standardvärde om sekvensen inte innehåller några element. |
| FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) |
Returnerar det första elementet i en sekvens som uppfyller ett angivet villkor eller ett standardvärde om inget sådant element hittas. |
| FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, TSource) |
Returnerar det första elementet i sekvensen som uppfyller ett villkor eller ett standardvärde om inget sådant element hittas. |
FirstOrDefault<TSource>(IQueryable<TSource>, TSource)
- Källa:
- Queryable.cs
- Källa:
- Queryable.cs
- Källa:
- Queryable.cs
- Källa:
- Queryable.cs
- Källa:
- Queryable.cs
Returnerar det första elementet i en sekvens eller ett standardvärde om sekvensen inte innehåller några element.
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);
[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 TSource FirstOrDefault<TSource>(this System.Linq.IQueryable<TSource> source, TSource defaultValue);
static member FirstOrDefault : System.Linq.IQueryable<'Source> * 'Source -> '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 FirstOrDefault : System.Linq.IQueryable<'Source> * 'Source -> 'Source
<Extension()>
Public Function FirstOrDefault(Of TSource) (source As IQueryable(Of TSource), defaultValue As TSource) As TSource
Typparametrar
- TSource
Typen av element sourcei .
Parametrar
- source
- IQueryable<TSource>
För IEnumerable<T> att returnera det första elementet i.
- defaultValue
- TSource
Standardvärdet som returneras om sekvensen är tom.
Returer
defaultValue om source är tom, annars är det första elementet i source.
- Attribut
Undantag
source är null.
Gäller för
FirstOrDefault<TSource>(IQueryable<TSource>)
- Källa:
- Queryable.cs
- Källa:
- Queryable.cs
- Källa:
- Queryable.cs
- Källa:
- Queryable.cs
- Källa:
- Queryable.cs
Returnerar det första elementet i en sekvens eller ett standardvärde om sekvensen inte innehåller några element.
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);
[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 TSource? FirstOrDefault<TSource>(this System.Linq.IQueryable<TSource> source);
static member FirstOrDefault : System.Linq.IQueryable<'Source> -> '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 FirstOrDefault : System.Linq.IQueryable<'Source> -> 'Source
<Extension()>
Public Function FirstOrDefault(Of TSource) (source As IQueryable(Of TSource)) As TSource
Typparametrar
- TSource
Typen av element sourcei .
Parametrar
- source
- IQueryable<TSource>
För IQueryable<T> att returnera det första elementet i.
Returer
default(TSource) om source är tomt. Annars är det första elementet i source.
- Attribut
Undantag
source är null.
Exempel
Följande kodexempel visar hur du använder FirstOrDefault<TSource>(IQueryable<TSource>) i en tom sekvens.
// 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
Ibland är värdet default(TSource) för inte det standardvärde som du vill använda om samlingen inte innehåller några element. I stället för att kontrollera resultatet för det oönskade standardvärdet och sedan ändra det om det behövs kan du använda DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) metoden för att ange det standardvärde som du vill använda om samlingen är tom. Anropa First<TSource>(IQueryable<TSource>) sedan för att hämta det första elementet. I följande kodexempel används båda metoderna för att hämta standardvärdet 1 om en samling numeriska månader är tom. Eftersom standardvärdet för ett heltal är 0, vilket inte motsvarar någon månad, måste standardvärdet anges som 1 i stället. Den första resultatvariabeln kontrolleras för det oönskade standardvärdet när frågan har slutförts. Den andra resultatvariabeln hämtas genom att anropa DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) för att ange standardvärdet 1.
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
Kommentarer
Metoden FirstOrDefault<TSource>(IQueryable<TSource>) genererar en MethodCallExpression som representerar att anropa FirstOrDefault<TSource>(IQueryable<TSource>) sig själv som en konstruerad generisk metod. Den skickar sedan till MethodCallExpression metoden för den Execute<TResult>(Expression) som representeras av IQueryProvider egenskapen för parameternProvider.source
Frågebeteendet som uppstår till följd av att ett uttrycksträd som representerar anrop FirstOrDefault<TSource>(IQueryable<TSource>) körs beror på implementeringen av source parametertypen. Det förväntade beteendet är att det returnerar det första elementet i source, eller ett standardvärde om source det är tomt.
Metoden FirstOrDefault ger inget sätt att ange standardvärdet som ska returneras om source det är tomt. Om du vill ange ett annat standardvärde än default(TSource)använder du metoden DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) enligt beskrivningen i avsnittet Exempel.
Gäller för
FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)
- Källa:
- Queryable.cs
- Källa:
- Queryable.cs
- Källa:
- Queryable.cs
- Källa:
- Queryable.cs
- Källa:
- Queryable.cs
Returnerar det första elementet i en sekvens som uppfyller ett angivet villkor eller ett standardvärde om inget sådant element hittas.
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);
[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 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
[<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 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
Typparametrar
- TSource
Typen av element sourcei .
Parametrar
- source
- IQueryable<TSource>
Ett IQueryable<T> att returnera ett element från.
- predicate
- Expression<Func<TSource,Boolean>>
En funktion för att testa varje element för ett villkor.
Returer
default(TSource) om source är tomt eller om inget element klarar testet som anges av predicate, annars är det första elementet i source som klarar testet som anges av predicate.
- Attribut
Undantag
source eller predicate är null.
Exempel
Följande kodexempel visar hur du använder FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) genom att skicka in ett predikat. I den andra frågan finns det inget element i sekvensen som uppfyller villkoret.
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.
Kommentarer
Den här metoden har minst en parameter av typen Expression<TDelegate> vars typargument är en av typerna Func<T,TResult> . För dessa parametrar kan du skicka ett lambda-uttryck och kompileras till en Expression<TDelegate>.
Metoden FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) genererar en MethodCallExpression som representerar att anropa FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) sig själv som en konstruerad generisk metod. Den skickar sedan till MethodCallExpression metoden för den Execute<TResult>(Expression) som representeras av IQueryProvider egenskapen för parameternProvider.source
Frågebeteendet som uppstår till följd av att ett uttrycksträd som representerar anrop FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) körs beror på implementeringen av source parametertypen. Det förväntade beteendet är att det returnerar det första elementet i source som uppfyller villkoret i predicate, eller ett standardvärde om inget element uppfyller villkoret.
Gäller för
FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, TSource)
- Källa:
- Queryable.cs
- Källa:
- Queryable.cs
- Källa:
- Queryable.cs
- Källa:
- Queryable.cs
- Källa:
- Queryable.cs
Returnerar det första elementet i sekvensen som uppfyller ett villkor eller ett standardvärde om inget sådant element hittas.
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);
[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 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
[<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 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
Typparametrar
- TSource
Typen av element sourcei .
Parametrar
- source
- IQueryable<TSource>
Ett IEnumerable<T> att returnera ett element från.
- predicate
- Expression<Func<TSource,Boolean>>
En funktion för att testa varje element för ett villkor.
- defaultValue
- TSource
Standardvärdet som returneras om sekvensen är tom.
Returer
defaultValue om source är tomt eller om inget element klarar testet som anges av predicate, annars är det första elementet i source som klarar testet som anges av predicate.
- Attribut
Undantag
source eller predicate är null.