public class Person { public string Name { get; set; } public string Gender { get; set; } public int Age { get; set; } } List<Person> people = new List<Person> { new Person { Name = "John", Gender = "Male", Age = 30 }, new Person { Name = "Jane", Gender = "Female", Age = 25 }, new Person { Name = "Bob", Gender = "Male", Age = 35 } }; var groupedAndOrderedPeople = from person in people group person by person.Gender into g orderby g.Key descending select g; foreach (var group in groupedAndOrderedPeople) { Console.WriteLine(group.Key); foreach (Person person in group) { Console.WriteLine("- " + person.Name); } }