Queryable.FirstOrDefault 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 il primo elemento di una sequenza o un valore predefinito se non viene trovato alcun elemento.
Overload
FirstOrDefault<TSource>(IQueryable<TSource>) |
Restituisce il primo elemento di una sequenza o un valore predefinito se la sequenza non contiene elementi. |
FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) |
Restituisce il primo elemento di una sequenza che soddisfa una condizione specificata o un valore predefinito se un tale elemento non viene trovato. |
FirstOrDefault<TSource>(IQueryable<TSource>, TSource) |
Restituisce il primo elemento di una sequenza o un valore predefinito se la sequenza non contiene elementi. |
FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, TSource) |
Restituisce il primo elemento della sequenza che soddisfa una condizione specificata o un valore predefinito se tale elemento non viene trovato. |
FirstOrDefault<TSource>(IQueryable<TSource>)
- Origine:
- Queryable.cs
- Origine:
- Queryable.cs
- Origine:
- Queryable.cs
Restituisce il primo elemento di una sequenza o un valore predefinito se la sequenza non contiene elementi.
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
Parametri di tipo
- TSource
Tipo degli elementi di source
.
Parametri
- source
- IQueryable<TSource>
Oggetto IQueryable<T> di cui restituire il primo elemento.
Restituisce
default
(TSource
) se source
è vuota; in caso contrario, il primo elemento di source
.
Eccezioni
source
è null
.
Esempio
Nell'esempio di codice seguente viene illustrato come usare FirstOrDefault<TSource>(IQueryable<TSource>) in una sequenza vuota.
// 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
A volte il valore di default(TSource)
non è il valore predefinito che si vuole usare se la raccolta non contiene elementi. Anziché controllare il risultato per il valore predefinito indesiderato e modificarlo, se necessario, è possibile usare il metodo per specificare il DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) valore predefinito che si vuole usare se la raccolta è vuota. Chiamare First<TSource>(IQueryable<TSource>) quindi per ottenere il primo elemento. Nell'esempio di codice seguente vengono usate entrambe le tecniche per ottenere un valore predefinito pari a 1 se una raccolta di mesi numerici è vuota. Poiché il valore predefinito per un intero è 0, che non corrisponde a alcun mese, il valore predefinito deve essere specificato come 1. La prima variabile di risultato viene selezionata per il valore predefinito indesiderato dopo il completamento della query. La seconda variabile di risultato viene ottenuta chiamando DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) per specificare un valore predefinito pari a 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
Commenti
Il FirstOrDefault<TSource>(IQueryable<TSource>) metodo genera un MethodCallExpression oggetto che rappresenta la chiamata FirstOrDefault<TSource>(IQueryable<TSource>) stessa come metodo generico costruito. Passa quindi l'oggetto MethodCallExpression al Execute<TResult>(Expression) metodo dell'oggetto IQueryProvider rappresentato dalla Provider proprietà del source
parametro.
Il comportamento della query che si verifica come risultato dell'esecuzione di un albero delle espressioni che rappresenta la chiamata FirstOrDefault<TSource>(IQueryable<TSource>) dipende dall'implementazione del tipo del source
parametro. Il comportamento previsto è che restituisce il primo elemento in source
o un valore predefinito se source
è vuoto.
Il FirstOrDefault metodo non fornisce un modo per specificare il valore predefinito da restituire se source
è vuoto. Se si vuole specificare un valore predefinito diverso da default(TSource)
, usare il DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) metodo come descritto nella sezione Esempio.
Si applica a
FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)
- Origine:
- Queryable.cs
- Origine:
- Queryable.cs
- Origine:
- Queryable.cs
Restituisce il primo elemento di una sequenza che soddisfa una condizione specificata o un valore predefinito se un tale elemento non viene trovato.
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
Parametri di tipo
- TSource
Tipo degli elementi di source
.
Parametri
- source
- IQueryable<TSource>
Oggetto IQueryable<T> dal quale restituire un elemento.
- predicate
- Expression<Func<TSource,Boolean>>
Funzione per testare ogni elemento rispetto a una condizione.
Restituisce
default
(TSource
) se source
è vuota o se nessun elemento supera il test specificato da predicate
; in caso contrario, il primo elemento in source
che supera il test specificato da predicate
.
Eccezioni
source
o predicate
è null
.
Esempio
Nell'esempio di codice seguente viene illustrato come usare FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) passando un predicato. Nella seconda query non è presente alcun elemento nella sequenza che soddisfa la condizione.
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.
Commenti
Questo metodo ha almeno un parametro di tipo il Func<T,TResult> cui argomento di tipo Expression<TDelegate> è uno dei tipi. Per questi parametri, è possibile passare un'espressione lambda e verrà compilata in un Expression<TDelegate>oggetto .
Il FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) metodo genera un MethodCallExpression oggetto che rappresenta la chiamata FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) stessa come metodo generico costruito. Passa quindi l'oggetto MethodCallExpression al Execute<TResult>(Expression) metodo dell'oggetto IQueryProvider rappresentato dalla Provider proprietà del source
parametro.
Il comportamento della query che si verifica come risultato dell'esecuzione di un albero delle espressioni che rappresenta la chiamata FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) dipende dall'implementazione del tipo del source
parametro. Il comportamento previsto è che restituisce il primo elemento in source
che soddisfa la condizione in predicate
o un valore predefinito se nessun elemento soddisfa la condizione.
Si applica a
FirstOrDefault<TSource>(IQueryable<TSource>, TSource)
- Origine:
- Queryable.cs
- Origine:
- Queryable.cs
- Origine:
- Queryable.cs
Restituisce il primo elemento di una sequenza o un valore predefinito se la sequenza non contiene elementi.
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
Parametri di tipo
- TSource
Tipo degli elementi di source
.
Parametri
- source
- IQueryable<TSource>
Oggetto IEnumerable<T> di cui restituire il primo elemento.
- defaultValue
- TSource
Valore predefinito da restituire se la sequenza è vuota.
Restituisce
defaultValue
se source
è vuoto; in caso contrario, il primo elemento in source
.
Eccezioni
source
è null
.
Si applica a
FirstOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, TSource)
- Origine:
- Queryable.cs
- Origine:
- Queryable.cs
- Origine:
- Queryable.cs
Restituisce il primo elemento della sequenza che soddisfa una condizione specificata o un valore predefinito se tale elemento non viene trovato.
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
Parametri di tipo
- TSource
Tipo degli elementi di source
.
Parametri
- source
- IQueryable<TSource>
Oggetto IEnumerable<T> dal quale restituire un elemento.
- predicate
- Expression<Func<TSource,Boolean>>
Funzione per testare ogni elemento rispetto a una condizione.
- defaultValue
- TSource
Valore predefinito da restituire se la sequenza è vuota.
Restituisce
defaultValue
se source
è vuoto o se nessun elemento supera il test specificato da predicate
; in caso contrario, il primo elemento in source
che supera il test specificato da predicate
.
Eccezioni
source
o predicate
è null
.