SelectMany C# with Example
The SelectMany linq method 'flattens' an IEnumerable> into an IEnumerable. All of the T elements within the IEnumerable instances contained in the source IEnumerable will be combined into a single IEnumerable. var words = new [] { "a,b,c", "d,e", "f" }; var splitAndCombine = words.SelectMany(x => x.Split(',')); // returns { "a", "b", "c", "d", "e", "f" } If you use a selector function which turns input elements into sequences, the result will be the elements of those sequences returned one by one. Note that, unlike SELECT(), the number of elements in the output doesn't need to be the same as were in the input. More real-world example class School { public Student[] Students { get; set; } } class Student { public string Name { get; set; } } var schools = new [] { new School(){ Students = new [] { new Student { Name="Bob"}, new Student { Name="Jack"} }}, new School(){ Students = new [] { new Student { Name="Jim"}, new Student { Name="John"} }} }; var allStudents = schools.SelectMany(s=> s.Students); foreach(var student in allStudents) { Console.WriteLine(student.Name); } Output: Bob Jack Jim John Live Demo on .NET Fiddle