Open Source Your Knowledge, Become a Contributor

Technology knowledge has to be shared and made accessible for free. Join the movement.

Create Content

SelectMany(<selector>) method

The SelectMany() method is used to "flatten" a sequence in which each of the elements of the sequence is a separate, subordinate sequence. For example, SelectMany() can turn a two-dimensional array into a single sequence of values, as shown in this example:

int[][] arrays = {
    new[] {1, 2, 3},
    new[] {4},
    new[] {5, 6, 7, 8},
    new[] {12, 14}
};
// Will return { 1, 2, 3, 4, 5, 6, 7, 8, 12, 14 }
IEnumerable<int> result = arrays.SelectMany(array => array);

Notice that in the code above, we passed an identity lambda expression into the SelectMany() call. This causes the elements of the constituent arrays to be copied into the resultant sequence without alteration.

You can also perform transformations on the constituent sequences, as shown in this example utilizing a list of lists:

List<List<int>> lists = new List<List<int>> {
    new List<int> {1, 2, 3},
    new List<int> {12},
    new List<int> {5, 6, 5, 7},
    new List<int> {10, 10, 10, 12}
};
// Will return { 1, 2, 3, 12, 5, 6, 7, 10, 12 }
IEnumerable<int> result = lists.SelectMany(list => list.Distinct());
Open Source Your Knowledge: become a Contributor and help others learn. Create New Content