Enumerable.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>(IEnumerable<TSource>, Func<TSource,Boolean>) |
Returnerar det första elementet i sekvensen som uppfyller ett villkor eller ett standardvärde om inget sådant element hittas. |
| FirstOrDefault<TSource>(IEnumerable<TSource>) |
Returnerar det första elementet i en sekvens eller ett standardvärde om sekvensen inte innehåller några element. |
FirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)
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::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, bool> ^ predicate);
public static TSource FirstOrDefault<TSource>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
static member FirstOrDefault : seq<'Source> * Func<'Source, bool> -> 'Source
<Extension()>
Public Function FirstOrDefault(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Boolean)) As TSource
Typparametrar
- TSource
Typen av element sourcei .
Parametrar
- source
- IEnumerable<TSource>
Ett IEnumerable<T> att returnera ett element från.
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.
Undantag
source eller predicate är null.
Exempel
Följande kodexempel visar hur du använder FirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) genom att skicka in ett predikat. I det andra anropet till metoden finns det inget element i matrisen som uppfyller villkoret.
string[] names = { "Hartono, Tommy", "Adams, Terry",
"Andersen, Henriette Thaulow",
"Hedlund, Magnus", "Ito, Shu" };
string firstLongName = names.FirstOrDefault(name => name.Length > 20);
Console.WriteLine("The first long name is '{0}'.", firstLongName);
string firstVeryLongName = names.FirstOrDefault(name => name.Length > 30);
Console.WriteLine(
"There is {0} name 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 longer than 30 characters.
*/
' Create an array of strings.
Dim names() As String =
{"Hartono, Tommy", "Adams, Terry", "Andersen, Henriette Thaulow", "Hedlund, Magnus", "Ito, Shu"}
' Select the first string in the array whose length is greater than 20.
Dim firstLongName As String =
names.FirstOrDefault(Function(name) name.Length > 20)
' Display the output.
Console.WriteLine($"The first long name is {firstLongName}")
' Select the first string in the array whose length is greater than 30,
' or a default value if there are no such strings in the array.
Dim firstVeryLongName As String =
names.FirstOrDefault(Function(name) name.Length > 30)
Dim text As String = IIf(String.IsNullOrEmpty(firstVeryLongName), "not a", "a")
Console.WriteLine($"There is {text} name longer than 30 characters.")
' This code produces the following output:
'
' The first long name is Andersen, Henriette Thaulow
'
' There is not a name longer than 30 characters.
Kommentarer
Standardvärdet för referenstyper och null-typer är null.
Gäller för
FirstOrDefault<TSource>(IEnumerable<TSource>)
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::Collections::Generic::IEnumerable<TSource> ^ source);
public static TSource FirstOrDefault<TSource>(this System.Collections.Generic.IEnumerable<TSource> source);
static member FirstOrDefault : seq<'Source> -> 'Source
<Extension()>
Public Function FirstOrDefault(Of TSource) (source As IEnumerable(Of TSource)) As TSource
Typparametrar
- TSource
Typen av element sourcei .
Parametrar
- source
- IEnumerable<TSource>
För IEnumerable<T> att returnera det första elementet i.
Returer
default(TSource) om source är tomt. Annars är det första elementet i source.
Undantag
source är null.
Exempel
Följande kodexempel visar hur du använder FirstOrDefault<TSource>(IEnumerable<TSource>) på en tom matris.
int[] numbers = { };
int first = numbers.FirstOrDefault();
Console.WriteLine(first);
/*
This code produces the following output:
0
*/
' Create an empty array.
Dim numbers() As Integer = {}
' Select the first element in the array, or a default value
' if there are not elements in the array.
Dim first As Integer = numbers.FirstOrDefault()
' Display the output.
Console.WriteLine(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>(IEnumerable<TSource>, TSource) metoden för att ange det standardvärde som du vill använda om samlingen är tom. Anropa First<TSource>(IEnumerable<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 efter det oönskade standardvärdet när frågan har körts klart. Den andra resultatvariabeln hämtas med hjälp DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) av 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.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.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.FirstOrDefault()
If firstMonth1 = 0 Then
firstMonth1 = 1
End If
Console.WriteLine($"The value of the firstMonth1 variable is {firstMonth1}")
' Setting the default value to 1 by using DefaultIfEmpty() in the query.
Dim firstMonth2 As Integer = months.DefaultIfEmpty(1).First()
Console.WriteLine($"The value of the firstMonth2 variable is {firstMonth2}")
' This code produces the following output:
'
' The value of the firstMonth1 variable is 1
' The value of the firstMonth2 variable is 1
Kommentarer
Standardvärdet för referenstyper och null-typer är null.
Metoden FirstOrDefault ger inget sätt att ange ett standardvärde. Om du vill ange ett annat standardvärde än default(TSource)använder du metoden DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) enligt beskrivningen i avsnittet Exempel.