英語で読む

次の方法で共有


Enumerable.DefaultIfEmpty メソッド

定義

IEnumerable<T>の要素、またはシーケンスが空の場合は既定値のシングルトン コレクションを返します。

オーバーロード

DefaultIfEmpty<TSource>(IEnumerable<TSource>)

シーケンスが空の場合は、指定したシーケンスの要素、またはシングルトン コレクション内の型パラメーターの既定値を返します。

DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource)

シーケンスが空の場合は、指定したシーケンスの要素、またはシングルトン コレクション内の指定した値を返します。

DefaultIfEmpty<TSource>(IEnumerable<TSource>)

ソース:
DefaultIfEmpty.cs
ソース:
DefaultIfEmpty.cs
ソース:
DefaultIfEmpty.cs

シーケンスが空の場合は、指定したシーケンスの要素、またはシングルトン コレクション内の型パラメーターの既定値を返します。

C#
public static System.Collections.Generic.IEnumerable<TSource> DefaultIfEmpty<TSource> (this System.Collections.Generic.IEnumerable<TSource> source);
C#
public static System.Collections.Generic.IEnumerable<TSource?> DefaultIfEmpty<TSource> (this System.Collections.Generic.IEnumerable<TSource> source);

型パラメーター

TSource

sourceの要素の型。

パラメーター

source
IEnumerable<TSource>

空の場合に既定値を返すシーケンス。

戻り値

IEnumerable<TSource>

source が空の場合、TSource 型の既定値を格納する IEnumerable<T> オブジェクト。それ以外の場合は、source

例外

sourcenullです。

次のコード例では、ソース シーケンスが空の場合に DefaultIfEmpty<TSource>(IEnumerable<TSource>) を使用して既定値を指定する方法を示します。

この例では、空でないシーケンスを使用します。

C#
class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public static void DefaultIfEmptyEx1()
{
    List<Pet> pets =
        new List<Pet>{ new Pet { Name="Barley", Age=8 },
                       new Pet { Name="Boots", Age=4 },
                       new Pet { Name="Whiskers", Age=1 } };

    foreach (Pet pet in pets.DefaultIfEmpty())
    {
        Console.WriteLine(pet.Name);
    }
}

/*
 This code produces the following output:

 Barley
 Boots
 Whiskers
*/

この例では、空のシーケンスを使用します。

C#
List<int> numbers = new List<int>();

foreach (int number in numbers.DefaultIfEmpty())
{
    Console.WriteLine(number);
}

/*
 This code produces the following output:

 0
*/

注釈

このメソッドは、遅延実行を使用して実装されます。 即時戻り値は、アクションの実行に必要なすべての情報を格納するオブジェクトです。 このメソッドで表されるクエリは、GetEnumerator メソッドを直接呼び出すか、C# で foreach を使用するか、Visual Basic で For Each を使用してオブジェクトが列挙されるまで実行されません。

参照型と null 許容型の既定値は nullです。

このメソッドを使用すると、左外部結合を GroupJoin メソッドと組み合わせたときに生成できます。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource)

ソース:
DefaultIfEmpty.cs
ソース:
DefaultIfEmpty.cs
ソース:
DefaultIfEmpty.cs

シーケンスが空の場合は、指定したシーケンスの要素、またはシングルトン コレクション内の指定した値を返します。

C#
public static System.Collections.Generic.IEnumerable<TSource> DefaultIfEmpty<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, TSource defaultValue);

型パラメーター

TSource

sourceの要素の型。

パラメーター

source
IEnumerable<TSource>

指定した値が空の場合に返すシーケンス。

defaultValue
TSource

シーケンスが空の場合に返す値。

戻り値

IEnumerable<TSource>

source が空の場合に defaultValue を含む IEnumerable<T>。それ以外の場合は、source

次のコード例では、DefaultIfEmpty<TSource>(IEnumerable<TSource>, TSource) メソッドを使用し、既定値を指定する方法を示します。 最初のシーケンスは空ではなく、2 番目のシーケンスは空です。

C#
class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public static void DefaultIfEmptyEx2()
{
    Pet defaultPet = new Pet { Name = "Default Pet", Age = 0 };

    List<Pet> pets1 =
        new List<Pet>{ new Pet { Name="Barley", Age=8 },
                       new Pet { Name="Boots", Age=4 },
                       new Pet { Name="Whiskers", Age=1 } };

    foreach (Pet pet in pets1.DefaultIfEmpty(defaultPet))
    {
        Console.WriteLine("Name: {0}", pet.Name);
    }

    List<Pet> pets2 = new List<Pet>();

    foreach (Pet pet in pets2.DefaultIfEmpty(defaultPet))
    {
        Console.WriteLine("\nName: {0}", pet.Name);
    }
}

/*
 This code produces the following output:

 Name: Barley
 Name: Boots
 Name: Whiskers

 Name: Default Pet
*/

注釈

このメソッドは、遅延実行を使用して実装されます。 即時戻り値は、アクションの実行に必要なすべての情報を格納するオブジェクトです。 このメソッドで表されるクエリは、GetEnumerator メソッドを直接呼び出すか、C# で foreach を使用するか、Visual Basic で For Each を使用してオブジェクトが列挙されるまで実行されません。

このメソッドを使用すると、左外部結合を GroupJoin メソッドと組み合わせたときに生成できます。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0