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 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 bir 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 source
tü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
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 bir 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 source
tü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
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 predicate
koş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 source
türü.
Parametreler
- source
- IQueryable<TSource>
öğesinin IQueryable<T> tek öğesini döndürmek için.
Döndürülenler
Giriş dizisinin tek öğesi veya default
dizi öğ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!
default(TSource)
Bazen değeri, koleksiyon öğe içermiyorsa 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 1 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, 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, varsayılan değer olan 1'i 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ğırmayı SingleOrDefault<TSource>(IQueryable<TSource>) temsil eden bir oluşturur. Daha sonra parametresinin özelliği tarafından Provider temsil edilen yöntemine IQueryProvidersource
iletirMethodCallExpression.Execute<TResult>(Expression)
Ç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 source
tek öğeyi veya boşsa source
varsayılan değeri döndürmesidir.
yöntemi, SingleOrDefault varsayılan 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 bir 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 source
tü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
giriş dizisinin içindeki koşulu predicate
karşılayan tek öğesi veya default
böyle bir öğe bulunamazsa (TSource
).
Özel durumlar
source
veya predicate
şeklindedir null
.
birden fazla öğe içindeki predicate
koşulu karşılar.
Örnekler
Aşağıdaki kod örneği, bir dizideki koşulu karşılayan tek öğeyi 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 tam olarak 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ğırmayı SingleOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) temsil eden bir oluşturur. Daha sonra parametresinin özelliği tarafından Provider temsil edilen yöntemine IQueryProvidersource
iletirMethodCallExpression.Execute<TResult>(Expression)
Ç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ış, tarafından belirtilen predicate
koşulu karşılayan tek öğeyi veya böyle bir öğe source
yoksa varsayılan değeri döndürmesidir.