Enumerable.SingleOrDefault Metod

Definition

Returnerar ett enskilt, specifikt element i en sekvens eller ett standardvärde om elementet inte hittas.

Överlagringar

Name Description
SingleOrDefault<TSource>(IEnumerable<TSource>)

Returnerar det enda elementet i en sekvens eller ett standardvärde om sekvensen är tom. den här metoden utlöser ett undantag om det finns fler än ett element i sekvensen.

SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Returnerar det enda elementet i en sekvens som uppfyller ett angivet villkor eller ett standardvärde om det inte finns något sådant element. den här metoden utlöser ett undantag om fler än ett element uppfyller villkoret.

SingleOrDefault<TSource>(IEnumerable<TSource>, TSource)

Returnerar det enda elementet i en sekvens eller ett angivet standardvärde om sekvensen är tom. den här metoden utlöser ett undantag om det finns fler än ett element i sekvensen.

SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>, TSource)

Returnerar det enda elementet i en sekvens som uppfyller ett angivet villkor eller ett angivet standardvärde om det inte finns något sådant element. den här metoden utlöser ett undantag om fler än ett element uppfyller villkoret.

SingleOrDefault<TSource>(IEnumerable<TSource>)

Källa:
Single.cs
Källa:
Single.cs
Källa:
Single.cs
Källa:
Single.cs
Källa:
Single.cs

Returnerar det enda elementet i en sekvens eller ett standardvärde om sekvensen är tom. den här metoden utlöser ett undantag om det finns fler än ett element i sekvensen.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static TSource SingleOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source);
public static TSource SingleOrDefault<TSource>(this System.Collections.Generic.IEnumerable<TSource> source);
public static TSource? SingleOrDefault<TSource>(this System.Collections.Generic.IEnumerable<TSource> source);
static member SingleOrDefault : seq<'Source> -> 'Source
<Extension()>
Public Function SingleOrDefault(Of TSource) (source As IEnumerable(Of TSource)) As TSource

Typparametrar

TSource

Typen av element sourcei .

Parametrar

source
IEnumerable<TSource>

En IEnumerable<T> som returnerar det enda elementet i.

Returer

TSource

Det enda elementet i indatasekvensen, eller default(TSource) om sekvensen inte innehåller några element.

Undantag

source är null.

Indatasekvensen innehåller mer än ett element.

Exempel

Följande kodexempel visar hur du använder SingleOrDefault<TSource>(IEnumerable<TSource>) för att välja det enda elementet i en matris.

string[] fruits1 = { "orange" };

string fruit1 = fruits1.SingleOrDefault();

Console.WriteLine(fruit1);

/*
 This code produces the following output:

 orange
*/
' Create an array that contains one item.
Dim fruits1() As String = {"orange"}

' Get the single item in the array or else a default value.
Dim result As String = fruits1.SingleOrDefault()

' Display the result.
Console.WriteLine($"First array: {result}")

Följande kodexempel visar att SingleOrDefault<TSource>(IEnumerable<TSource>) returnerar ett standardvärde när sekvensen är tom.

string[] fruits2 = { };

string fruit2 = fruits2.SingleOrDefault();

Console.WriteLine(
    String.IsNullOrEmpty(fruit2) ? "No such string!" : fruit2);

/*
 This code produces the following output:

 No such string!
*/
' Create an empty array.
Dim fruits2() As String = {}

result = String.Empty

' Get the single item in the array or else a default value.
result = fruits2.SingleOrDefault()

' Display the result.
Dim output As String =
IIf(String.IsNullOrEmpty(result), "No single item found", result)
Console.WriteLine($"Second array: {output}")

' This code produces the following output:
'
' First array: orange
' Second array: No single item found

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. Single<TSource>(IEnumerable<TSource>) Anropa sedan för att hämta elementet. I följande kodexempel används båda metoderna för att hämta standardvärdet 1 om en samling sidnummer är tomma. Eftersom standardvärdet för ett heltal är 0, vilket vanligtvis inte är ett giltigt sidnummer, 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.

int[] pageNumbers = { };

// Setting the default value to 1 after the query.
int pageNumber1 = pageNumbers.SingleOrDefault();
if (pageNumber1 == 0)
{
    pageNumber1 = 1;
}
Console.WriteLine("The value of the pageNumber1 variable is {0}", pageNumber1);

// Setting the default value to 1 by using DefaultIfEmpty() in the query.
int pageNumber2 = pageNumbers.DefaultIfEmpty(1).Single();
Console.WriteLine("The value of the pageNumber2 variable is {0}", pageNumber2);

/*
 This code produces the following output:

 The value of the pageNumber1 variable is 1
 The value of the pageNumber2 variable is 1
*/
Dim pageNumbers() As Integer = {}

' Setting the default value to 1 after the query.
Dim pageNumber1 As Integer = pageNumbers.SingleOrDefault()
If pageNumber1 = 0 Then
    pageNumber1 = 1
End If
Console.WriteLine($"The value of the pageNumber1 variable is {pageNumber1}")

' Setting the default value to 1 by using DefaultIfEmpty() in the query.
Dim pageNumber2 As Integer = pageNumbers.DefaultIfEmpty(1).Single()
Console.WriteLine($"The value of the pageNumber2 variable is {pageNumber2}")

' This code produces the following output:

' The value of the pageNumber1 variable is 1
' The value of the pageNumber2 variable is 1

Kommentarer

Standardvärdet för referenstyper och null-typer är null.

Metoden SingleOrDefault 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.

Gäller för

SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Källa:
Single.cs
Källa:
Single.cs
Källa:
Single.cs
Källa:
Single.cs
Källa:
Single.cs

Returnerar det enda elementet i en sekvens som uppfyller ett angivet villkor eller ett standardvärde om det inte finns något sådant element. den här metoden utlöser ett undantag om fler än ett element uppfyller villkoret.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static TSource SingleOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, bool> ^ predicate);
public static TSource SingleOrDefault<TSource>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
public static TSource? SingleOrDefault<TSource>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
static member SingleOrDefault : seq<'Source> * Func<'Source, bool> -> 'Source
<Extension()>
Public Function SingleOrDefault(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>

En IEnumerable<T> att returnera ett enda element från.

predicate
Func<TSource,Boolean>

En funktion för att testa ett element för ett villkor.

Returer

TSource

Det enda elementet i indatasekvensen som uppfyller villkoret, eller default(TSource) om inget sådant element hittas.

Undantag

source eller predicate är null.

Mer än ett element uppfyller villkoret i predicate.

Exempel

Följande kodexempel visar hur du använder SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) för att välja det enda elementet i en matris som uppfyller ett villkor.

string[] fruits = { "apple", "banana", "mango",
                      "orange", "passionfruit", "grape" };

string fruit1 = fruits.SingleOrDefault(fruit => fruit.Length > 10);

Console.WriteLine(fruit1);

/*
 This code produces the following output:

 passionfruit
*/
' Create an array of strings.
Dim fruits() As String =
{"apple", "banana", "mango", "orange", "passionfruit", "grape"}

' Get the single item in the array whose length is > 10.
Dim fruit1 As String =
fruits.SingleOrDefault(Function(fruit) fruit.Length > 10)

' Display the result.
Console.WriteLine($"First array: {fruit1}")

Följande kodexempel visar att SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) returnerar ett standardvärde när sekvensen inte innehåller några element som uppfyller villkoret.

string fruit2 =
    fruits.SingleOrDefault(fruit => fruit.Length > 15);

Console.WriteLine(
    String.IsNullOrEmpty(fruit2) ? "No such string!" : fruit2);

/*
 This code produces the following output:

 No such string!
*/
' Get the single item in the array whose length is > 15.
Dim fruit2 As String =
fruits.SingleOrDefault(Function(fruit) fruit.Length > 15)

' Display the result.
Dim output As String =
IIf(String.IsNullOrEmpty(fruit2), "No single item found", fruit2)
Console.WriteLine($"Second array: {output}")

' This code produces the following output:
'
' First array: passionfruit
' Second array: No single item found

Kommentarer

Standardvärdet för referenstyper och null-typer är null.

Gäller för

SingleOrDefault<TSource>(IEnumerable<TSource>, TSource)

Källa:
Single.cs
Källa:
Single.cs
Källa:
Single.cs
Källa:
Single.cs
Källa:
Single.cs

Returnerar det enda elementet i en sekvens eller ett angivet standardvärde om sekvensen är tom. den här metoden utlöser ett undantag om det finns fler än ett element i sekvensen.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static TSource SingleOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source, TSource defaultValue);
public static TSource SingleOrDefault<TSource>(this System.Collections.Generic.IEnumerable<TSource> source, TSource defaultValue);
static member SingleOrDefault : seq<'Source> * 'Source -> 'Source
<Extension()>
Public Function SingleOrDefault(Of TSource) (source As IEnumerable(Of TSource), defaultValue As TSource) As TSource

Typparametrar

TSource

Typen av element sourcei .

Parametrar

source
IEnumerable<TSource>

En IEnumerable<T> som returnerar det enda elementet i.

defaultValue
TSource

Standardvärdet som returneras om sekvensen är tom.

Returer

TSource

Det enda elementet i indatasekvensen, eller defaultValue om sekvensen inte innehåller några element.

Undantag

source är null.

Indatasekvensen innehåller mer än ett element.

Gäller för

SingleOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>, TSource)

Källa:
Single.cs
Källa:
Single.cs
Källa:
Single.cs
Källa:
Single.cs
Källa:
Single.cs

Returnerar det enda elementet i en sekvens som uppfyller ett angivet villkor eller ett angivet standardvärde om det inte finns något sådant element. den här metoden utlöser ett undantag om fler än ett element uppfyller villkoret.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static TSource SingleOrDefault(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, bool> ^ predicate, TSource defaultValue);
public static TSource SingleOrDefault<TSource>(this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate, TSource defaultValue);
static member SingleOrDefault : seq<'Source> * Func<'Source, bool> * 'Source -> 'Source
<Extension()>
Public Function SingleOrDefault(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Boolean), defaultValue As TSource) As TSource

Typparametrar

TSource

Typen av element sourcei .

Parametrar

source
IEnumerable<TSource>

En IEnumerable<T> att returnera ett enda element från.

predicate
Func<TSource,Boolean>

En funktion för att testa ett element för ett villkor.

defaultValue
TSource

Standardvärdet som returneras om sekvensen är tom.

Returer

TSource

Det enda elementet i indatasekvensen som uppfyller villkoret, eller defaultValue om inget sådant element hittas.

Undantag

source eller predicate är null.

Mer än ett element uppfyller villkoret i predicate.

Gäller för