HomeSearch

C# Count Extension Method: Use Lambda to Count

This C# example page uses the Count extension from System.Linq. It counts elements with a lambda.

Count.

This extension method enumerates elements. In many cases, the Count() extension is not useful, but in some program contexts it is appropriate. Most collections have a Length or Count property that is more efficient.

Example.

The Count() extension method is found in System.Linq. It always acts upon an IEnumerable type. This means it works on Lists and arrays, even when those types have other counting properties (Count and Length).

Note: When Count() is called on Lists or arrays, you lose some performance over calling the direct properties available.

Important: If you use a LINQ query expression (or have an IEnumerable instance) Count is an effective option.

IEnumerable
C# program that uses Count extension using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { int[] array = { 1, 2, 3 }; // Don't use Count() like this! Use Length. Console.WriteLine(array.Count()); List<int> list = new List<int>() { 1, 2, 3 }; // Don't use Count() like this! Use Count property. Console.WriteLine(list.Count()); var result = from element in array orderby element descending select element; // Good. Console.WriteLine(result.Count()); } } Output 3 3 3

Example 2.

Count() can be used with an argument of type Func. The Func can be specified with a lambda expression. In this example we count only int elements greater than 2. The values 3, 4 and 5—three elements—are greater than 2.FuncLambdas
C# program that uses Count with argument using System; using System.Linq; class Program { static void Main() { int[] array = { 1, 2, 3, 4, 5 }; // ... Count only elements greater than 2. int greaterThanTwo = array.Count(element => element > 2); Console.WriteLine(greaterThanTwo); } } Output 3

Performance.

There are some Count extension method benchmarks. The Length and Count properties are compared to the Count extension method. Using a property on a collection is much faster than Count.Count Array Elements

Summary.

The Count extension method provides a way to get the number of elements in an IEnumerable collection by enumerating those elements. This is an inefficient way to get the element count of collections that store a cached field.
Home
Dot Net Perls
© 2007-2019 Sam Allen. All rights reserved. Written by Sam Allen, info@dotnetperls.com.