Export (0) Print
Expand All

Queryable.DefaultIfEmpty<TSource> Method (IQueryable<TSource>)

Returns the elements of the specified sequence or the type parameter's default value in a singleton collection if the sequence is empty.

Namespace:  System.Linq
Assembly:  System.Core (in System.Core.dll)

public static IQueryable<TSource> DefaultIfEmpty<TSource>(
	this IQueryable<TSource> source
)

Type Parameters

TSource

The type of the elements of source.

Parameters

source
Type: System.Linq.IQueryable<TSource>
The IQueryable<T> to return a default value for if empty.

Return Value

Type: System.Linq.IQueryable<TSource>
An IQueryable<T> that contains default(TSource) if source is empty; otherwise, source.

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type IQueryable<TSource>. When you use instance method syntax to call this method, omit the first parameter.

ExceptionCondition
ArgumentNullException

source is null.

The DefaultIfEmpty<TSource>(IQueryable<TSource>) method generates a MethodCallExpression that represents calling DefaultIfEmpty<TSource>(IQueryable<TSource>) itself as a constructed generic method. It then passes the MethodCallExpression to the CreateQuery<TElement>(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

The query behavior that occurs as a result of executing an expression tree that represents calling DefaultIfEmpty<TSource>(IQueryable<TSource>) depends on the implementation of the type of the source parameter. The expected behavior is that it returns source if it is not empty. Otherwise, it returns an IQueryable<T> that contains default(TSource).

The following code examples demonstrate how to use DefaultIfEmpty<TSource>(IQueryable<TSource>) to provide a default value in case the source sequence is empty.


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];
   outputBlock.Text += first + "\n";
}

/*
    This code produces the following output:

    Barley
*/


Silverlight

Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.

Community Additions

ADD
Show:
© 2015 Microsoft