While some of the .NET collections (e.g. List<T>) provide a Count property, we don’t have it for all. This is where the Count operator from LINQ can be handy. As long as the collection implements IEnumerable<T>, we can use it. There is one overload that gives the count of all elements and another one lets us count all elements satisfying a condition. Here is an example of both: using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { var persons = GetPersons(); //This gets the total count Console.WriteLine("There are {0} persons in total", persons.Count()); //This gets all persons with department as Engg Console.WriteLine("There are {0} engineers", persons.Count(p => p.Department.Equals("Engg"))); } static IEnumerable<Person> GetPersons() { return new List<Person> { new Person { Name = "Indranil", Department = "Engg" }, new Person { Name = "John", Department = "HR" }, new Person { Name = "Shalini", Department = "Finance" }, new Person { Name = "Steve", Department = "Engg" }, new Person { Name = "George", Department = "Finance" }, }; } } public class Person { public string Name { get; set; } public string Department { get; set; } } } If your data structure doesn’t implement IEnumerable<T> (e.g. ArrayList), you can use count as: nonGenericSequence.OfType<Person>().Count();