Count
This C# extension method enumerates elements. In many cases, the Count()
extension is not useful, but in others it is appropriate.
Most collections in C# have a Length
or Count
property that is more efficient. For these situations, use the property directly.
This is a complex example of Count()
. Count()
can be used with an argument of type Func
. The Func
can be specified with a lambda.
int
elements greater than 2. The values 3, 4 and 5—three elements—are greater than 2.using System; using System.Linq; int[] array = { 1, 2, 3, 4, 5 }; // ... Count only elements greater than 2. int greaterThanTwo = array.Count(element => element > 2); Console.WriteLine(greaterThanTwo);3
To continue, the Count()
extension is found in System.Linq
. It acts upon IEnumerable
—so it works on Lists and arrays, even when those types have other counting properties.
Count()
is called on Lists or arrays, you lose some performance over calling the direct properties available.IEnumerable
instance) Count
is an effective option.using System; using System.Collections.Generic; using System.Linq; int[] array = { 1, 2, 3 }; // Part 1: don't use Count() like this. // ... Use Length instead. Console.WriteLine(array.Count()); List<int> list = new List<int>() { 1, 2, 3 }; Console.WriteLine(list.Count()); // Part 2: use Count on query expression. var result = from element in array orderby element descending select element; Console.WriteLine(result.Count());3 3 3
In benchmarks, the Length
and Count
properties are compared to the Count
extension method. Using a property on a collection is much faster than Count
.
The Count()
method gets the number of elements in an IEnumerable
collection. It enumerates the elements. This often is an inefficient way to get the element count of collections.