Queryable.DefaultIfEmpty 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 dalam urutan atau kumpulan singleton bernilai default jika urutannya kosong.
Overload
DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) |
Mengembalikan elemen urutan yang ditentukan atau nilai yang ditentukan dalam koleksi singleton jika urutannya kosong. |
DefaultIfEmpty<TSource>(IQueryable<TSource>) |
Mengembalikan elemen urutan yang ditentukan atau nilai default parameter jenis dalam koleksi singleton jika urutannya kosong. |
DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource)
- Sumber:
- Queryable.cs
- Sumber:
- Queryable.cs
- Sumber:
- Queryable.cs
Mengembalikan elemen urutan yang ditentukan atau nilai yang ditentukan dalam koleksi singleton jika urutannya kosong.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IQueryable<TSource> ^ DefaultIfEmpty(System::Linq::IQueryable<TSource> ^ source, TSource defaultValue);
public static System.Linq.IQueryable<TSource> DefaultIfEmpty<TSource> (this System.Linq.IQueryable<TSource> source, TSource defaultValue);
static member DefaultIfEmpty : System.Linq.IQueryable<'Source> * 'Source -> System.Linq.IQueryable<'Source>
<Extension()>
Public Function DefaultIfEmpty(Of TSource) (source As IQueryable(Of TSource), defaultValue As TSource) As IQueryable(Of TSource)
Jenis parameter
- TSource
Jenis elemen source
.
Parameter
- source
- IQueryable<TSource>
IQueryable<T> untuk mengembalikan nilai yang ditentukan jika kosong.
- defaultValue
- TSource
Nilai yang akan dikembalikan jika urutannya kosong.
Mengembalikan
yang IQueryable<T> berisi defaultValue
jika source
kosong; jika tidak, source
.
Pengecualian
source
adalah null
.
Contoh
Contoh kode berikut menunjukkan situasi di mana berguna untuk memanggil DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) dalam kueri LINQ. Nilai default diteruskan ke DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) dalam contoh ini.
// Create a list of Pet objects.
List<Pet> pets =
new List<Pet>{ new Pet { Name="Barley", Age=8 },
new Pet { Name="Boots", Age=4 },
new Pet { Name="Whiskers", Age=1 } };
// This query selects only those pets that are 10 or older.
// In case there are no pets that meet that criteria, call
// DefaultIfEmpty(). This code passes an (optional) default
// value to DefaultIfEmpty().
string[] oldPets =
pets.AsQueryable()
.Where(pet => pet.Age >= 10)
.Select(pet => pet.Name)
.DefaultIfEmpty("[EMPTY]")
.ToArray();
Console.WriteLine("First query: " + oldPets[0]);
// This query selects only those pets that are 10 or older.
// This code does not call DefaultIfEmpty().
string[] oldPets2 =
pets.AsQueryable()
.Where(pet => pet.Age >= 10)
.Select(pet => pet.Name)
.ToArray();
// There may be no elements in the array, so directly
// accessing element 0 may throw an exception.
try
{
Console.WriteLine("Second query: " + oldPets2[0]);
}
catch (Exception e)
{
Console.WriteLine("Second query: An exception was thrown: " + e.Message);
}
/*
This code produces the following output:
First query: [EMPTY]
Second query: An exception was thrown: Index was outside the bounds of the array.
*/
' Create a list of Pet objects.
Dim pets As New List(Of Pet)(New Pet() { _
New Pet With {.Name = "Barley", .Age = 8}, _
New Pet With {.Name = "Boots", .Age = 4}, _
New Pet With {.Name = "Whiskers", .Age = 1}})
' This query returns pets that are 10 or older. In case there are no pets
' that meet that criteria, call DefaultIfEmpty(). This code passes an (optional)
' default value to DefaultIfEmpty().
Dim oldPets() As String = pets.AsQueryable() _
.Where(Function(Pet) Pet.Age >= 10) _
.Select(Function(Pet) Pet.Name) _
.DefaultIfEmpty("[EMPTY]") _
.ToArray()
Try
MsgBox("First query: " + oldPets(0))
Catch ex As Exception
Console.WriteLine("First query: An exception was thrown: " + ex.Message)
End Try
' This query selects only those pets that are 10 or older.
' This code does not call DefaultIfEmpty().
Dim oldPets2() As String = _
pets.AsQueryable() _
.Where(Function(Pet) Pet.Age >= 10) _
.Select(Function(Pet) Pet.Name) _
.ToArray()
' There may be no elements in the array, so directly
' accessing element 0 may throw an exception.
Try
MsgBox("Second query: " + oldPets2(0))
Catch ex As Exception
MsgBox("Second query: An exception was thrown: " + ex.Message)
End Try
' This code produces the following output:
'
' First(query) : [EMPTY]
' Second query: An exception was thrown: Index was outside the bounds of the array.
Keterangan
Metode ini DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) menghasilkan MethodCallExpression yang mewakili pemanggilan DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) dirinya sebagai metode generik yang dibangun. Kemudian meneruskan MethodCallExpression ke CreateQuery<TElement>(Expression) metode dari yang diwakili IQueryProvider oleh Provider properti source
parameter .
Perilaku kueri yang terjadi sebagai akibat dari menjalankan pohon ekspresi yang mewakili panggilan DefaultIfEmpty<TSource>(IQueryable<TSource>, TSource) tergantung pada implementasi jenis source
parameter. Perilaku yang diharapkan adalah bahwa ia kembali source
jika tidak kosong. Jika tidak, ia mengembalikan yang IQueryable<T> berisi defaultValue
.
Berlaku untuk
DefaultIfEmpty<TSource>(IQueryable<TSource>)
- Sumber:
- Queryable.cs
- Sumber:
- Queryable.cs
- Sumber:
- Queryable.cs
Mengembalikan elemen urutan yang ditentukan atau nilai default parameter jenis dalam koleksi singleton jika urutannya kosong.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IQueryable<TSource> ^ DefaultIfEmpty(System::Linq::IQueryable<TSource> ^ source);
public static System.Linq.IQueryable<TSource> DefaultIfEmpty<TSource> (this System.Linq.IQueryable<TSource> source);
public static System.Linq.IQueryable<TSource?> DefaultIfEmpty<TSource> (this System.Linq.IQueryable<TSource> source);
static member DefaultIfEmpty : System.Linq.IQueryable<'Source> -> System.Linq.IQueryable<'Source>
<Extension()>
Public Function DefaultIfEmpty(Of TSource) (source As IQueryable(Of TSource)) As IQueryable(Of TSource)
Jenis parameter
- TSource
Jenis elemen source
.
Parameter
- source
- IQueryable<TSource>
IQueryable<T> untuk mengembalikan nilai default jika kosong.
Mengembalikan
Yang IQueryable<T> berisi default
(TSource
) jika source
kosong; jika tidak, source
.
Pengecualian
source
adalah null
.
Contoh
Contoh kode berikut menunjukkan cara menggunakan DefaultIfEmpty<TSource>(IQueryable<TSource>) untuk memberikan nilai default jika urutan sumber kosong.
class Pet
{
public string Name { get; set; }
public int Age { get; set; }
}
public static void DefaultIfEmptyEx1()
{
// Create a list of Pet objects.
List<Pet> pets =
new List<Pet>{ new Pet { Name="Barley", Age=8 },
new Pet { Name="Boots", Age=4 },
new Pet { Name="Whiskers", Age=1 } };
// Call DefaultIfEmtpy() on the collection that Select()
// returns, so that if the initial list is empty, there
// will always be at least one item in the returned array.
string[] names =
pets.AsQueryable()
.Select(pet => pet.Name)
.DefaultIfEmpty()
.ToArray();
string first = names[0];
Console.WriteLine(first);
}
/*
This code produces the following output:
Barley
*/
Structure Pet
Public Name As String
Public Age As Integer
End Structure
Shared Sub DefaultIfEmptyEx1()
' Create a list of Pet objects.
Dim pets As New List(Of Pet)(New Pet() { _
New Pet With {.Name = "Barley", .Age = 8}, _
New Pet With {.Name = "Boots", .Age = 4}, _
New Pet With {.Name = "Whiskers", .Age = 1}})
' Call DefaultIfEmtpy() on the collection that Select()
' returns, so that if the initial list is empty, there
' will always be at least one item in the returned array.
Dim names() As String = pets.AsQueryable() _
.Select(Function(Pet) Pet.Name) _
.DefaultIfEmpty() _
.ToArray()
Dim first As String = names(0)
MsgBox(first)
' This code produces the following output:
'
' Barley
End Sub
Keterangan
Metode ini DefaultIfEmpty<TSource>(IQueryable<TSource>) menghasilkan MethodCallExpression yang mewakili pemanggilan DefaultIfEmpty<TSource>(IQueryable<TSource>) dirinya sebagai metode generik yang dibangun. Kemudian meneruskan MethodCallExpression ke CreateQuery<TElement>(Expression) metode dari yang diwakili IQueryProvider oleh Provider properti source
parameter .
Perilaku kueri yang terjadi sebagai akibat dari menjalankan pohon ekspresi yang mewakili panggilan DefaultIfEmpty<TSource>(IQueryable<TSource>) tergantung pada implementasi jenis source
parameter. Perilaku yang diharapkan adalah bahwa ia kembali source
jika tidak kosong. Jika tidak, ia mengembalikan yang IQueryable<T> berisi default(TSource)
.