
The Enumerable.Empty method provides a way for you to generate an IEnumerable collection of zero elements in your C# program. It can be used when you want to avoid a query expression and instead just want to use an empty sequence.

As a static generic method, you must specify the type of the sequence you want to generate. Thus, Enumerable.Empty<int> will return a zero-element sequence of ints (IEnumerable<int>). The Count() extension indicates the sequence is indeed empty. If you use ToArray, you will get an empty array.
This C# example program uses the Empty method on the Enumerable type. It requires System.Linq.
Program that uses Enumerable.Empty [C#]
using System;
using System.Linq;
class Program
{
static void Main()
{
var empty = Enumerable.Empty<int>();
Console.WriteLine(empty.Count());
int[] array = empty.ToArray();
Console.WriteLine(array.Length);
}
}
Output
0
0When to use it. The best use of Enumerable.Empty would be for when you want to call a method that receives an IEnumerable collection. In some calling locations, you could pass a query expression; in others, you could simply pass Enumerable.Empty.

The implementation of Empty is interesting. It uses a static generic type and then calls a property (Instance) on that type. An empty array is lazily initialized in the Instance property. Because Enumerable.Empty caches the zero-element array, it can provide a slight performance advantage in some programs.
Enumerable.Empty provides a useful bit of functionality for IEnumerable collections in the C# language. With an internal element cache, it can avoid allocations. It can be used as an argument to any method that receives an IEnumerable generic type.
LINQ Examples