Open Source Your Knowledge, Become a Contributor

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

Create Content

Select(<selector>) method

The Select() method invokes the provided selector delegate on each element of the source IEnumerable<T> sequence, and returns a new result IEnumerable<U> sequence containing the output of each invocation.

Wow! That's a mouthful! Let's try it this way. Select() takes each source element, transforms it, and returns a sequence of the transformed values. Better?

NOTE: Here we see LINQ showing its SQL roots again. The Select() method is named based on SQL syntax, but acts like the map() function in Java, JavaScript, Python, etc.

The selector method should take a single parameter of type T and should return a value of type U. The result sequence will have the same number of elements as the source sequence and each element will be of type U.

IEnumerable<string> strings = new List<string> { "one", "two", "three", "four" };
// Will return { 3, 3, 5, 4 }
IEnumerable<int> result = strings.Select(str => str.Length);
IEnumerable<Point> points = new List<Point>
{
    new Point(0, 0),
    new Point(1, 1),
    new Point(2, 0)
};
// Will return { "(0, 0)", "(1, 1)", "(2, 0)" }
IEnumerable<string> result = points.Select(pt => $"({pt.X}, {pt.Y})");

Exercise

In this exercise, try to return a sequence of strings that consist of the provided names in the form: "<Last>, <First>".

Select Exercise
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System.Collections.Generic;
using System.Linq;
namespace CalculatedSequence1
{
public static class Select1
{
public interface Name
{
string First { get; }
string Middle { get; }
string Last { get; }
}
// Return display strings in the form of "<Last>, <First>" for
// each provided name
public static IEnumerable<string> DisplayStringsForNames(IEnumerable<Name> names)
{
// Uncomment:
// return names.???();
}
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Open Source Your Knowledge: become a Contributor and help others learn. Create New Content