<p>If I have variable of type <code>IEnumerable&lt;List&lt;string&gt;&gt;</code> is there a LINQ statement or lambda expression I can apply to it which will combine the lists returning an <code>IEnumerable&lt;string&gt;</code>? </p>

SelectMany - i.e.
```
```
IEnumerable<List<string>> someList = ...;
        IEnumerable<string> all = someList.SelectMany(x => x);
```
```
For each item in someList, this then uses the lambda "x => x" to get an IEnumerable<T> for the inner items. In this case, each "x" is a List<T>, which is already IEnumerable<T>.
These are then returned as a contiguous block. Essentially, SelectMany is something like (simplified):
```
```
static IEnumerable<TResult> SelectMany<TSource, TResult>(
    this IEnumerable<TSource> source,
    Func<TSource, IEnumerable<TResult>> selector) {

    foreach(TSource item in source) {
      foreach(TResult result in selector(item)) {
        yield return result;
      }
    }
}
```
```
Although that is simplified somewhat.