Queryable.SingleOrDefault Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
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
Koşulu karşılayan giriş dizisinin tek öğesi veya böyle bir öğe bulunamazsa defaultValue
.
Özel durumlar
source
veya predicate
null
.
predicate
iç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
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ış, source
iç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
predicate
veya böyle bir öğe bulunamazsa default
(TSource
) içindeki koşulu karşılayan giriş dizisinin tek öğesi.
Özel durumlar
source
veya predicate
null
.
predicate
iç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 predicate
tarafından belirtilen koşulu karşılayan tek öğeyi veya böyle bir öğe yoksa varsayılan değeri döndürmesidir.