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 bir koşulu veya böyle bir öğe yoksa varsayılan değeri karşılayan bir dizinin tek öğesini 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 bir koşulu veya böyle bir öğe yoksa varsayılan değeri karşılayan bir dizinin tek öğesini 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

sourceöğelerinin türü.

Parametreler

source
IQueryable<TSource>

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

defaultValue
TSource

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

Döndürülenler

TSource

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

Özel durumlar

source null.

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 bir koşulu veya böyle bir öğe yoksa varsayılan değeri karşılayan bir dizinin tek öğesini 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

sourceöğelerinin türü.

Parametreler

source
IQueryable<TSource>

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

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ğer.

Döndürülenler

TSource

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

Özel durumlar

source veya predicatenull.

predicateiçindeki koşulu birden fazla öğe 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

sourceöğelerinin türü.

Parametreler

source
IQueryable<TSource>

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

Döndürülenler

TSource

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

Özel durumlar

source null.

source birden fazla öğeye sahiptir.

Örnekler

Aşağıdaki kod örneği, bir dizinin tek öğesini seçmek için SingleOrDefault<TSource>(IQueryable<TSource>) nasıl kullanılacağını gösterir. İkinci sorgu, dizide tam olarak bir öğe olmadığında SingleOrDefault<TSource>(IQueryable<TSource>) varsayılan bir değer döndürdüğünü 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 default(TSource) değeri, 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, koleksiyon boşsa kullanmak istediğiniz varsayılan değeri belirtmek için DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) yöntemini kullanabilirsiniz. Ardından öğesini almak için Single<TSource>(IQueryable<TSource>) çağırın. Aşağıdaki kod örneği, sayfa numaraları koleksiyonu boşsa 1 varsayılan değerini elde etmek 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, varsayılan değer bunun yerine 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, varsayılan değer olan 1'i belirtmek için DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) çağrılarak 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

SingleOrDefault<TSource>(IQueryable<TSource>) yöntemi, SingleOrDefault<TSource>(IQueryable<TSource>) kendisini oluşturulan genel bir yöntem olarak çağırmayı temsil eden bir MethodCallExpression oluşturur. Ardından MethodCallExpression, source parametresinin Provider özelliği tarafından temsil edilen IQueryProviderExecute<TResult>(Expression) yöntemine geçirir.

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

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

Şunlara uygulanır

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

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

Belirtilen bir koşulu veya böyle bir öğe yoksa varsayılan değeri karşılayan bir dizinin tek öğesini 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

sourceöğelerinin türü.

Parametreler

source
IQueryable<TSource>

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

predicate
Expression<Func<TSource,Boolean>>

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

Döndürülenler

TSource

predicateveya böyle bir öğe bulunamazsa default(TSource) içindeki koşulu karşılayan giriş dizisinin tek öğesi.

Özel durumlar

source veya predicatenull.

predicateiçindeki koşulu birden fazla öğe karşılar.

Örnekler

Aşağıdaki kod örneği, bir dizideki koşulu karşılayan tek öğeyi seçmek için SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) nasıl kullanılacağını gösterir. İkinci sorgu, dizide koşulu karşılayan tam olarak bir öğe olmadığında SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)'nin varsayılan bir değer döndürdüğünü gösterir.

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 Func<T,TResult> türlerinden biri olan Expression<TDelegate> türünde en az bir parametreye sahiptir. Bu parametreler için bir lambda ifadesi geçirebilirsiniz ve bir Expression<TDelegate>derlenir.

SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) yöntemi, SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) kendisini oluşturulan genel bir yöntem olarak çağırmayı temsil eden bir MethodCallExpression oluşturur. Ardından MethodCallExpression, source parametresinin Provider özelliği tarafından temsil edilen IQueryProviderExecute<TResult>(Expression) yöntemine geçirir.

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

Şunlara uygulanır