<t>SelectMany flattens queries that return lists of lists. For example<br/>
<br/>
public class PhoneNumber<br/>
{<br/>
public string Number { get; set; }<br/>
}<br/>
<br/>
public class Person<br/>
{<br/>
public IEnumerable PhoneNumbers { get; set; }<br/>
public string Name { get; set; }<br/>
}<br/>
<br/>
IEnumerable people = new List();<br/>
<br/>
// Select gets a list of lists of phone numbers<br/>
IEnumerable> phoneLists = people.Select(p => p.PhoneNumbers);<br/>
<br/>
// SelectMany flattens it to just a list of phone numbers.<br/>
IEnumerable phoneNumbers = people.SelectMany(p => p.PhoneNumbers);<br/>
<br/>
// And to include data from the parent in the result: <br/>
// pass an expression to the second parameter (resultSelector) in the overload:<br/>
var directory = people<br/>
.SelectMany(p => p.PhoneNumbers,<br/>
(parent, child) => new { parent.Name, child.Number });<br/>
<br/>
```<br/>
<br/>
[Live Demo on .NET Fiddle](https://dotnetfiddle.net/LNyymI)</t>