Queryable.Single Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengembalikan satu elemen tertentu dari urutan.
Overload
Single<TSource>(IQueryable<TSource>) |
Mengembalikan satu-satunya elemen dari urutan, dan melemparkan pengecualian jika tidak ada tepat satu elemen dalam urutan. |
Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) |
Mengembalikan satu-satunya elemen dari urutan yang memenuhi kondisi tertentu, dan melemparkan pengecualian jika ada lebih dari satu elemen tersebut. |
Single<TSource>(IQueryable<TSource>)
- Sumber:
- Queryable.cs
- Sumber:
- Queryable.cs
- Sumber:
- Queryable.cs
Mengembalikan satu-satunya elemen dari urutan, dan melemparkan pengecualian jika tidak ada tepat satu elemen dalam urutan.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource Single(System::Linq::IQueryable<TSource> ^ source);
public static TSource Single<TSource> (this System.Linq.IQueryable<TSource> source);
static member Single : System.Linq.IQueryable<'Source> -> 'Source
<Extension()>
Public Function Single(Of TSource) (source As IQueryable(Of TSource)) As TSource
Jenis parameter
- TSource
Jenis elemen source
.
Parameter
- source
- IQueryable<TSource>
IQueryable<T> untuk mengembalikan elemen tunggal.
Mengembalikan
Elemen tunggal dari urutan input.
Pengecualian
source
adalah null
.
Contoh
Contoh kode berikut menunjukkan cara menggunakan Single<TSource>(IQueryable<TSource>) untuk memilih satu-satunya elemen array.
// Create two arrays.
string[] fruits1 = { "orange" };
string[] fruits2 = { "orange", "apple" };
// Get the only item in the first array.
string fruit1 = fruits1.AsQueryable().Single();
Console.WriteLine("First query: " + fruit1);
try
{
// Try to get the only item in the second array.
string fruit2 = fruits2.AsQueryable().Single();
Console.WriteLine("Second query: " + fruit2);
}
catch (System.InvalidOperationException)
{
Console.WriteLine(
"Second query: The collection does not contain exactly one element."
);
}
/*
This code produces the following output:
First query: orange
Second query: The collection does not contain exactly one element
*/
' Create two arrays.
Dim fruits1() As String = {"orange"}
Dim fruits2() As String = {"orange", "apple"}
' Get the only item in the first array.
Dim result As String = fruits1.AsQueryable().Single()
' Display the result.
MsgBox("First query: " & result)
Try
' Try to get the only item in the second array.
Dim fruit2 As String = fruits2.AsQueryable().Single()
MsgBox("Second query: " + fruit2)
Catch
MsgBox("Second query: The collection does not contain exactly one element.")
End Try
' This code produces the following output:
' First query: orange
' Second query: The collection does not contain exactly one element.
Keterangan
Metode ini Single<TSource>(IQueryable<TSource>) menghasilkan MethodCallExpression yang mewakili pemanggilan Single<TSource>(IQueryable<TSource>) dirinya sebagai metode generik yang dibangun. Kemudian meneruskan MethodCallExpression ke Execute<TResult>(Expression) metode dari yang diwakili IQueryProvider oleh Provider properti source
parameter .
Perilaku kueri yang terjadi sebagai akibat dari menjalankan pohon ekspresi yang mewakili panggilan Single<TSource>(IQueryable<TSource>) tergantung pada implementasi jenis source
parameter. Perilaku yang diharapkan adalah bahwa ia mengembalikan satu-satunya elemen di source
.
Berlaku untuk
Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)
- Sumber:
- Queryable.cs
- Sumber:
- Queryable.cs
- Sumber:
- Queryable.cs
Mengembalikan satu-satunya elemen dari urutan yang memenuhi kondisi tertentu, dan melemparkan pengecualian jika ada lebih dari satu elemen tersebut.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource Single(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, bool> ^> ^ predicate);
public static TSource Single<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate);
static member Single : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, bool>> -> 'Source
<Extension()>
Public Function Single(Of TSource) (source As IQueryable(Of TSource), predicate As Expression(Of Func(Of TSource, Boolean))) As TSource
Jenis parameter
- TSource
Jenis elemen source
.
Parameter
- source
- IQueryable<TSource>
IQueryable<T> Untuk mengembalikan satu elemen dari.
- predicate
- Expression<Func<TSource,Boolean>>
Fungsi untuk menguji elemen untuk kondisi.
Mengembalikan
Elemen tunggal dari urutan input yang memenuhi kondisi di predicate
.
Pengecualian
source
atau predicate
adalah null
.
Tidak ada elemen yang memenuhi kondisi di predicate
.
-atau-
Lebih dari satu elemen memenuhi kondisi di predicate
.
-atau-
Urutan sumber kosong.
Contoh
Contoh kode berikut menunjukkan cara menggunakan Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) untuk memilih satu-satunya elemen array yang memenuhi kondisi.
string[] fruits = { "apple", "banana", "mango",
"orange", "passionfruit", "grape" };
// Get the only string in the array whose length is greater than 10.
string fruit1 = fruits.AsQueryable().Single(fruit => fruit.Length > 10);
Console.WriteLine("First Query: " + fruit1);
try
{
// Try to get the only string in the array
// whose length is greater than 15.
string fruit2 = fruits.AsQueryable().Single(fruit => fruit.Length > 15);
Console.WriteLine("Second Query: " + fruit2);
}
catch (System.InvalidOperationException)
{
Console.Write("Second Query: The collection does not contain ");
Console.WriteLine("exactly one element whose length is greater than 15.");
}
/*
This code produces the following output:
First Query: passionfruit
Second Query: The collection does not contain exactly one
element whose length is greater than 15.
*/
Dim fruits() As String = _
{"apple", "banana", "mango", "orange", "passionfruit", "grape"}
' Get the only string in the array whose length is greater than 10.
Dim result As String = _
fruits.AsQueryable().Single(Function(fruit) fruit.Length > 10)
' Display the result.
MsgBox("First Query: " & result)
Try
' Try to get the only string in the array
' whose length is greater than 15.
Dim fruit2 As String = fruits.AsQueryable().Single(Function(fruit) fruit.Length > 15)
MsgBox("Second Query: " + fruit2)
Catch
Dim text As String = "Second Query: The collection does not contain "
text = text & "exactly one element whose length is greater than 15."
MsgBox(text)
End Try
' This code produces the following output:
' First Query: passionfruit
' Second Query: The collection does not contain exactly one
' element whose length is greater than 15.
Keterangan
Metode ini memiliki setidaknya satu parameter jenis Expression<TDelegate> yang argumen jenisnya adalah salah satu jenis Func<T,TResult> . Untuk parameter ini, Anda dapat meneruskan ekspresi lambda dan akan dikompilasi ke Expression<TDelegate>.
Metode ini Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) menghasilkan MethodCallExpression yang mewakili pemanggilan Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) dirinya sebagai metode generik yang dibangun. Kemudian meneruskan MethodCallExpression ke Execute<TResult>(Expression) metode dari yang diwakili IQueryProvider oleh Provider properti source
parameter .
Perilaku kueri yang terjadi sebagai akibat dari menjalankan pohon ekspresi yang mewakili panggilan Single<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) tergantung pada implementasi jenis source
parameter. Perilaku yang diharapkan adalah bahwa ia mengembalikan satu-satunya elemen dalam source
yang memenuhi kondisi yang ditentukan oleh predicate
.