Queryable.SingleOrDefault Yöntem

Tanım

Bir dizinin tek, belirli bir öğesini veya böyle bir öğe bulunamazsa varsayılan değeri döndürür.

Aşırı Yüklemeler

SingleOrDefault<TSource>(IQueryable<TSource>, TSource)

Bir dizinin tek öğesini veya dizi boşsa varsayılan değeri döndürür; bu yöntem, dizide birden fazla öğe varsa bir özel durum oluşturur.

SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, TSource)

Belirtilen koşulu karşılayan bir dizinin tek öğesini veya böyle bir öğe yoksa varsayılan değeri döndürür; Bu yöntem, koşulu birden fazla öğe karşılarsa bir özel durum oluşturur.

SingleOrDefault<TSource>(IQueryable<TSource>)

Bir dizinin tek öğesini veya dizi boşsa varsayılan değeri döndürür; bu yöntem, dizide birden fazla öğe varsa bir özel durum oluşturur.

SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)

Belirtilen koşulu karşılayan bir dizinin tek öğesini veya böyle bir öğe yoksa varsayılan değeri döndürür; Bu yöntem, koşulu birden fazla öğe karşılarsa bir özel durum oluşturur.

SingleOrDefault<TSource>(IQueryable<TSource>, TSource)

Kaynak:
Queryable.cs
Kaynak:
Queryable.cs
Kaynak:
Queryable.cs

Bir dizinin tek öğesini veya dizi boşsa varsayılan değeri döndürür; bu yöntem, dizide birden fazla öğe varsa bir özel durum oluşturur.

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

Tür Parametreleri

TSource

öğelerinin sourcetürü.

Parametreler

source
IQueryable<TSource>

öğesinin IEnumerable<T> tek öğesini döndürmek için.

defaultValue
TSource

Dizi boşsa döndürülecek varsayılan değerdir.

Döndürülenler

TSource

Giriş dizisinin tek öğesi veya defaultValue dizi öğe içermiyorsa.

Özel durumlar

source, null değeridir.

Giriş dizisi birden fazla öğe içeriyor.

Şunlara uygulanır

SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, TSource)

Kaynak:
Queryable.cs
Kaynak:
Queryable.cs
Kaynak:
Queryable.cs

Belirtilen koşulu karşılayan bir dizinin tek öğesini veya böyle bir öğe yoksa varsayılan değeri döndürür; Bu yöntem, koşulu birden fazla öğe karşılarsa bir özel durum oluşturur.

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

Tür Parametreleri

TSource

öğelerinin sourcetürü.

Parametreler

source
IQueryable<TSource>

Öğesinden IEnumerable<T> tek bir öğe döndürmek için.

predicate
Expression<Func<TSource,Boolean>>

Bir koşul için bir öğeyi test etmek için bir işlev.

defaultValue
TSource

Dizi boşsa döndürülecek varsayılan değerdir.

Döndürülenler

TSource

Koşulu karşılayan veya defaultValue böyle bir öğe bulunamazsa giriş dizisinin tek öğesi.

Özel durumlar

source veya predicate şeklindedir null.

Birden fazla öğe içindeki predicatekoşulu karşılar.

Şunlara uygulanır

SingleOrDefault<TSource>(IQueryable<TSource>)

Kaynak:
Queryable.cs
Kaynak:
Queryable.cs
Kaynak:
Queryable.cs

Bir dizinin tek öğesini veya dizi boşsa varsayılan değeri döndürür; bu yöntem, dizide birden fazla öğe varsa bir özel durum oluşturur.

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

Tür Parametreleri

TSource

öğelerinin sourcetürü.

Parametreler

source
IQueryable<TSource>

öğesinin IQueryable<T> tek öğesini döndürmek için.

Döndürülenler

TSource

Giriş dizisinin tek öğesi veya defaultdizi öğe içermiyorsa (TSource).

Özel durumlar

source, null değeridir.

source birden fazla öğeye sahiptir.

Örnekler

Aşağıdaki kod örneği, bir dizinin tek öğesini seçmek için nasıl kullanılacağını SingleOrDefault<TSource>(IQueryable<TSource>) gösterir. İkinci sorgu, dizide tam olarak bir öğe olmadığında varsayılan bir değer döndürdüğünü SingleOrDefault<TSource>(IQueryable<TSource>) gösterir.

// Create two arrays. The second is empty.
string[] fruits1 = { "orange" };
string[] fruits2 = { };

// Get the only item in the first array, or else
// the default value for type string (null).
string fruit1 = fruits1.AsQueryable().SingleOrDefault();
Console.WriteLine("First Query: " + fruit1);

// Get the only item in the second array, or else
// the default value for type string (null).
string fruit2 = fruits2.AsQueryable().SingleOrDefault();
Console.WriteLine("Second Query: " +
    (String.IsNullOrEmpty(fruit2) ? "No such string!" : fruit2));

/*
    This code produces the following output:

    First Query: orange
    Second Query: No such string!
*/
' Create two arrays. The second is empty.
Dim fruits1() As String = {"orange"}
Dim fruits2() As String = {}

' Get the only item in the first array, or else
' the default value for type string (null).
Dim fruit1 As String = fruits1.AsQueryable().SingleOrDefault()
MsgBox("First Query: " + fruit1)

' Get the only item in the second array, or else
' the default value for type string (null). 
Dim fruit2 As String = fruits2.AsQueryable().SingleOrDefault()
MsgBox("Second Query: " & _
    IIf(String.IsNullOrEmpty(fruit2), "No such string!", fruit2))

' This code produces the following output:

' First Query: orange
' Second Query: No such string!

Bazen değeri default(TSource) , koleksiyonda öğe yoksa kullanmak istediğiniz varsayılan değer değildir. İstenmeyen varsayılan değerin sonucunu denetlemek ve gerekirse değiştirmek yerine yöntemini kullanarak DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) koleksiyon boşsa kullanmak istediğiniz varsayılan değeri belirtebilirsiniz. Ardından öğesini almak için çağrısı Single<TSource>(IQueryable<TSource>) yapın. Aşağıdaki kod örneği, sayfa numaraları koleksiyonu boşsa varsayılan değeri 1 almak için her iki tekniği de kullanır. Bir tamsayı için varsayılan değer genellikle geçerli bir sayfa numarası olmayan 0 olduğundan, bunun yerine varsayılan değer 1 olarak belirtilmelidir. sorgu tamamlandıktan sonra ilk sonuç değişkeni istenmeyen varsayılan değer için denetlendi. İkinci sonuç değişkeni, 1 varsayılan değerini belirtmek için çağrılarak DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) elde edilir.

int[] pageNumbers = { };

// Setting the default value to 1 after the query.
int pageNumber1 = pageNumbers.AsQueryable().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.AsQueryable().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.AsQueryable().SingleOrDefault()
If pageNumber1 = 0 Then
    pageNumber1 = 1
End If
MsgBox(String.Format("The value of the pageNumber1 variable is {0}", pageNumber1))

' Setting the default value to 1 by using DefaultIfEmpty() in the query.
Dim pageNumber2 As Integer = pageNumbers.AsQueryable().DefaultIfEmpty(1).Single()
MsgBox(String.Format("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

Açıklamalar

yöntemi, SingleOrDefault<TSource>(IQueryable<TSource>) kendisini oluşturulan genel bir MethodCallExpression yöntem olarak çağıran SingleOrDefault<TSource>(IQueryable<TSource>) bir oluşturur. Ardından parametresinin MethodCallExpressionExecute<TResult>(Expression) özelliği tarafından temsil edilen yöntemine IQueryProviderProvidersource iletir.

Çağrıyı SingleOrDefault<TSource>(IQueryable<TSource>) temsil eden bir ifade ağacının yürütülmesi sonucunda oluşan sorgu davranışı, parametre türünün uygulanmasına source bağlıdır. Beklenen davranış, içindeki sourcetek öğeyi veya boşsa source varsayılan değeri döndürmesidir.

yöntemi, SingleOrDefault varsayılan bir değer belirtmek için bir yol sağlamaz. dışında default(TSource)bir varsayılan değer belirtmek istiyorsanız, Örnek bölümünde açıklandığı gibi yöntemini kullanın DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) .

Şunlara uygulanır

SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)

Kaynak:
Queryable.cs
Kaynak:
Queryable.cs
Kaynak:
Queryable.cs

Belirtilen koşulu karşılayan bir dizinin tek öğesini veya böyle bir öğe yoksa varsayılan değeri döndürür; Bu yöntem, koşulu birden fazla öğe karşılarsa bir özel durum oluşturur.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static TSource SingleOrDefault(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, bool> ^> ^ predicate);
public static TSource SingleOrDefault<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate);
public static TSource? SingleOrDefault<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate);
static member SingleOrDefault : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, bool>> -> 'Source
<Extension()>
Public Function SingleOrDefault(Of TSource) (source As IQueryable(Of TSource), predicate As Expression(Of Func(Of TSource, Boolean))) As TSource

Tür Parametreleri

TSource

öğelerinin sourcetürü.

Parametreler

source
IQueryable<TSource>

Öğesinden IQueryable<T> tek bir öğe döndürmek için.

predicate
Expression<Func<TSource,Boolean>>

Bir koşul için bir öğeyi test etmek için bir işlev.

Döndürülenler

TSource

giriş dizisinin içindeki koşulu predicatekarşılayan tek öğesi veya defaultTSource() böyle bir öğe bulunamazsa.

Özel durumlar

source veya predicate şeklindedir null.

Birden fazla öğe içindeki predicatekoşulu karşılar.

Örnekler

Aşağıdaki kod örneği, bir koşulu karşılayan bir dizinin tek öğesini seçmek için nasıl kullanılacağını SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) gösterir. İkinci sorgu, dizi koşulu karşılayan bir öğe içermediğinde varsayılan bir değer döndürdüğünü gösterir SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) .

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

// Get the single string in the array whose length is greater
// than 10, or else the default value for type string (null).
string fruit1 =
    fruits.AsQueryable().SingleOrDefault(fruit => fruit.Length > 10);
Console.WriteLine("First Query: " + fruit1);

// Get the single string in the array whose length is greater
// than 15, or else the default value for type string (null).
string fruit2 =
   fruits.AsQueryable().SingleOrDefault(fruit => fruit.Length > 15);
Console.WriteLine("Second Query: " +
    (String.IsNullOrEmpty(fruit2) ? "No such string!" : fruit2));

/*
    This code produces the following output:

    First Query: passionfruit
    Second Query: No such string!
*/
Dim fruits() As String = _
    {"apple", "banana", "mango", "orange", "passionfruit", "grape"}

' Get the single string in the array whose length is greater
' than 10, or else the default value for type string (null).
Dim fruit1 As String = _
    fruits.AsQueryable().SingleOrDefault(Function(fruit) fruit.Length > 10)
' Display the result.
MsgBox("First Query: " & fruit1)

' Get the single string in the array whose length is greater
' than 15, or else the default value for type string (null).
Dim fruit2 As String = _
    fruits.AsQueryable().SingleOrDefault(Function(fruit) fruit.Length > 15)
MsgBox("Second Query: " & _
    IIf(String.IsNullOrEmpty(fruit2), "No such string!", fruit2))

' This code produces the following output:

' First Query: passionfruit
' Second Query: No such string!

Açıklamalar

Bu yöntem, tür bağımsız değişkeni türlerden Expression<TDelegate> biri olan türünde en az bir parametreye Func<T,TResult> sahiptir. Bu parametreler için bir lambda ifadesi geçirebilirsiniz ve bu ifade bir Expression<TDelegate>olarak derlenir.

yöntemi, SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) kendisini oluşturulan genel bir MethodCallExpression yöntem olarak çağıran SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) bir oluşturur. Ardından parametresinin MethodCallExpressionExecute<TResult>(Expression) özelliği tarafından temsil edilen yöntemine IQueryProviderProvidersource iletir.

Çağrıyı SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) temsil eden bir ifade ağacının yürütülmesi sonucunda oluşan sorgu davranışı, parametre türünün uygulanmasına source bağlıdır. Beklenen davranış, içinde tarafından predicatebelirtilen koşulu karşılayan tek öğeyi source veya böyle bir öğe yoksa varsayılan değeri döndürmesidir.

Şunlara uygulanır