Queryable.LastOrDefault 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 elemen terakhir dari urutan, atau nilai default jika tidak ada elemen yang ditemukan.
Overload
LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, TSource) |
Mengembalikan elemen terakhir dari urutan yang memenuhi kondisi atau nilai default jika tidak ada elemen tersebut yang ditemukan. |
LastOrDefault<TSource>(IQueryable<TSource>, TSource) |
Mengembalikan elemen terakhir dari urutan, atau nilai default jika urutan tidak berisi elemen. |
LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) |
Mengembalikan elemen terakhir dari urutan yang memenuhi kondisi atau nilai default jika tidak ada elemen tersebut yang ditemukan. |
LastOrDefault<TSource>(IQueryable<TSource>) |
Mengembalikan elemen terakhir secara berurutan, atau nilai default jika urutan tidak berisi elemen. |
LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>, TSource)
- Sumber:
- Queryable.cs
- Sumber:
- Queryable.cs
- Sumber:
- Queryable.cs
Mengembalikan elemen terakhir dari urutan yang memenuhi kondisi atau nilai default jika tidak ada elemen tersebut yang ditemukan.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource LastOrDefault(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, bool> ^> ^ predicate, TSource defaultValue);
public static TSource LastOrDefault<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate, TSource defaultValue);
static member LastOrDefault : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, bool>> * 'Source -> 'Source
<Extension()>
Public Function LastOrDefault(Of TSource) (source As IQueryable(Of TSource), predicate As Expression(Of Func(Of TSource, Boolean)), defaultValue As TSource) As TSource
Jenis parameter
- TSource
Jenis elemen source
.
Parameter
- source
- IQueryable<TSource>
IEnumerable<T> Untuk mengembalikan elemen dari.
- predicate
- Expression<Func<TSource,Boolean>>
Fungsi untuk menguji setiap elemen untuk kondisi.
- defaultValue
- TSource
Nilai default yang akan dikembalikan jika urutannya kosong.
Mengembalikan
defaultValue
jika urutan kosong atau jika tidak ada elemen yang lulus tes dalam fungsi predikat; jika tidak, elemen terakhir yang lulus pengujian dalam fungsi predikat.
Pengecualian
source
atau predicate
adalah null
.
Berlaku untuk
LastOrDefault<TSource>(IQueryable<TSource>, TSource)
- Sumber:
- Queryable.cs
- Sumber:
- Queryable.cs
- Sumber:
- Queryable.cs
Mengembalikan elemen terakhir dari urutan, atau nilai default jika urutan tidak berisi elemen.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource LastOrDefault(System::Linq::IQueryable<TSource> ^ source, TSource defaultValue);
public static TSource LastOrDefault<TSource> (this System.Linq.IQueryable<TSource> source, TSource defaultValue);
static member LastOrDefault : System.Linq.IQueryable<'Source> * 'Source -> 'Source
<Extension()>
Public Function LastOrDefault(Of TSource) (source As IQueryable(Of TSource), defaultValue As TSource) As TSource
Jenis parameter
- TSource
Jenis elemen source
.
Parameter
- source
- IQueryable<TSource>
IEnumerable<T> untuk mengembalikan elemen terakhir.
- defaultValue
- TSource
Nilai default yang akan dikembalikan jika urutannya kosong.
Mengembalikan
defaultValue
jika urutan sumber kosong; jika tidak, elemen terakhir di IEnumerable<T>.
Pengecualian
source
adalah null
.
Berlaku untuk
LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)
- Sumber:
- Queryable.cs
- Sumber:
- Queryable.cs
- Sumber:
- Queryable.cs
Mengembalikan elemen terakhir dari urutan yang memenuhi kondisi atau nilai default jika tidak ada elemen tersebut yang ditemukan.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource LastOrDefault(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, bool> ^> ^ predicate);
public static TSource LastOrDefault<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate);
public static TSource? LastOrDefault<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate);
static member LastOrDefault : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, bool>> -> 'Source
<Extension()>
Public Function LastOrDefault(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 elemen dari.
- predicate
- Expression<Func<TSource,Boolean>>
Fungsi untuk menguji setiap elemen untuk kondisi.
Mengembalikan
default
(TSource
) jika source
kosong atau jika tidak ada elemen yang lulus tes dalam fungsi predikat; jika tidak, elemen source
terakhir yang lulus pengujian dalam fungsi predikat.
Pengecualian
source
atau predicate
adalah null
.
Contoh
Contoh kode berikut menunjukkan cara menggunakan LastOrDefault<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) dengan meneruskan predikat. Dalam panggilan kedua ke metode , tidak ada elemen dalam urutan yang memenuhi kondisi.
double[] numbers = { 49.6, 52.3, 51.0, 49.4, 50.2, 48.3 };
// Get the last number in the array that rounds to 50.0,
// or else the default value for type double (0.0).
double last50 =
numbers.AsQueryable().LastOrDefault(n => Math.Round(n) == 50.0);
Console.WriteLine("The last number that rounds to 50 is {0}.", last50);
// Get the last number in the array that rounds to 40.0,
// or else the default value for type double (0.0).
double last40 =
numbers.AsQueryable().LastOrDefault(n => Math.Round(n) == 40.0);
Console.WriteLine(
"The last number that rounds to 40 is {0}.",
last40 == 0.0 ? "[DOES NOT EXIST]" : last40.ToString());
/*
This code produces the following output:
The last number that rounds to 50 is 50.2.
The last number that rounds to 40 is [DOES NOT EXIST].
*/
Dim numbers() As Double = {49.6, 52.3, 51.0, 49.4, 50.2, 48.3}
' Get the last number in the array that rounds to 50.0,
' or else the default value for type double (0.0).
Dim last50 As Double = _
numbers.AsQueryable().LastOrDefault(Function(n) Math.Round(n) = 50.0)
MsgBox(String.Format("The last number that rounds to 50 is {0}.", last50))
' Get the last number in the array that rounds to 40.0,
' or else the default value for type double (0.0).
Dim last40 As Double = _
numbers.AsQueryable().LastOrDefault(Function(n) Math.Round(n) = 40.0)
MsgBox(String.Format("The last number that rounds to 40 is {0}.", _
IIf(last40 = 0.0, "[DOES NOT EXIST]", last40.ToString())))
'This code produces the following output:
'The last number that rounds to 50 is 50.2.
'The last number that rounds to 40 is [DOES NOT EXIST].
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 LastOrDefault<TSource>(IQueryable<TSource>) menghasilkan MethodCallExpression yang mewakili pemanggilan LastOrDefault<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 LastOrDefault<TSource>(IQueryable<TSource>) tergantung pada implementasi jenis source
parameter. Perilaku yang diharapkan adalah mengembalikan elemen terakhir yang source
memenuhi kondisi yang ditentukan oleh predicate
. Ini mengembalikan nilai default jika tidak ada elemen seperti itu di source
.
Berlaku untuk
LastOrDefault<TSource>(IQueryable<TSource>)
- Sumber:
- Queryable.cs
- Sumber:
- Queryable.cs
- Sumber:
- Queryable.cs
Mengembalikan elemen terakhir secara berurutan, atau nilai default jika urutan tidak berisi elemen.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static TSource LastOrDefault(System::Linq::IQueryable<TSource> ^ source);
public static TSource LastOrDefault<TSource> (this System.Linq.IQueryable<TSource> source);
public static TSource? LastOrDefault<TSource> (this System.Linq.IQueryable<TSource> source);
static member LastOrDefault : System.Linq.IQueryable<'Source> -> 'Source
<Extension()>
Public Function LastOrDefault(Of TSource) (source As IQueryable(Of TSource)) As TSource
Jenis parameter
- TSource
Jenis elemen source
.
Parameter
- source
- IQueryable<TSource>
IQueryable<T> untuk mengembalikan elemen terakhir.
Mengembalikan
default
(TSource
) jika source
kosong; jika tidak, elemen terakhir di source
.
Pengecualian
source
adalah null
.
Contoh
Contoh kode berikut menunjukkan cara menggunakan LastOrDefault<TSource>(IQueryable<TSource>) pada array kosong.
// Create an empty array.
string[] fruits = { };
// Get the last item in the array, or else the default
// value for type string (null).
string last = fruits.AsQueryable().LastOrDefault();
Console.WriteLine(
String.IsNullOrEmpty(last) ? "[STRING IS NULL OR EMPTY]" : last);
/*
This code produces the following output:
[STRING IS NULL OR EMPTY]
*/
' Create an empty array.
Dim fruits() As String = {}
' Get the last item in the array, or else the default
' value for type string (null).
Dim last As String = fruits.AsQueryable().LastOrDefault()
MsgBox(IIf(String.IsNullOrEmpty(last), "[STRING IS NULL OR EMPTY]", last))
' This code produces the following output:
' [STRING IS NULL OR EMPTY]
Terkadang nilai default(TSource)
bukan nilai default yang ingin Anda gunakan jika koleksi tidak berisi elemen. Alih-alih memeriksa hasil untuk nilai default yang tidak diinginkan lalu mengubahnya jika perlu, Anda dapat menggunakan DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) metode untuk menentukan nilai default yang ingin Anda gunakan jika koleksi kosong. Kemudian, panggil Last<TSource>(IQueryable<TSource>) untuk mendapatkan elemen terakhir. Contoh kode berikut menggunakan kedua teknik untuk mendapatkan nilai default 1 jika kumpulan hari numerik dalam sebulan kosong. Karena nilai default untuk bilangan bulat adalah 0, yang tidak sesuai dengan hari apa pun dalam sebulan, nilai default harus ditentukan sebagai 1 sebagai gantinya. Variabel hasil pertama diperiksa untuk nilai default yang tidak diinginkan setelah kueri selesai. Variabel hasil kedua diperoleh dengan memanggil DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) untuk menentukan nilai default 1.
List<int> daysOfMonth = new List<int> { };
// Setting the default value to 1 after the query.
int lastDay1 = daysOfMonth.AsQueryable().LastOrDefault();
if (lastDay1 == 0)
{
lastDay1 = 1;
}
Console.WriteLine("The value of the lastDay1 variable is {0}", lastDay1);
// Setting the default value to 1 by using DefaultIfEmpty() in the query.
int lastDay2 = daysOfMonth.AsQueryable().DefaultIfEmpty(1).Last();
Console.WriteLine("The value of the lastDay2 variable is {0}", lastDay2);
/*
This code produces the following output:
The value of the lastDay1 variable is 1
The value of the lastDay2 variable is 1
*/
Dim daysOfMonth As New List(Of Integer)(New Integer() {})
' Setting the default value to 1 after the query.
Dim lastDay1 As Integer = daysOfMonth.AsQueryable().LastOrDefault()
If lastDay1 = 0 Then
lastDay1 = 1
End If
MsgBox(String.Format("The value of the lastDay1 variable is {0}", lastDay1))
' Setting the default value to 1 by using DefaultIfEmpty() in the query.
Dim lastDay2 As Integer = daysOfMonth.AsQueryable().DefaultIfEmpty(1).Last()
MsgBox(String.Format("The value of the lastDay2 variable is {0}", lastDay2))
' This code produces the following output:
'
' The value of the lastDay1 variable is 1
' The value of the lastDay2 variable is 1
Keterangan
Metode ini LastOrDefault<TSource>(IQueryable<TSource>) menghasilkan MethodCallExpression yang mewakili pemanggilan LastOrDefault<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 LastOrDefault<TSource>(IQueryable<TSource>) tergantung pada implementasi jenis source
parameter. Perilaku yang diharapkan adalah mengembalikan elemen terakhir di source
, atau nilai default jika source
kosong.
Metode LastOrDefault ini tidak menyediakan cara untuk menentukan nilai default. Jika Anda ingin menentukan nilai default selain default(TSource)
, gunakan metode seperti yang DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) dijelaskan di bagian Contoh.