こんばんは。きわさです。
ここのところ、C#のLinqの話が多いです。
今回はSelectについてです。
Selectは、ある要素のリストから新たな形式でリストを作ることができます。
List<User> list = new List<User> () 
{
    new User() { Id = 1, Name = “Tanaka” },
    new User() { Id = 2, Name = “Sato” },
    new User() { Id = 3, Name = “Yamada” },
};
List<string> newList = list.Select(user => user.Name).ToList();
各User要素からNameのみを取得し、新たに文字列のリストとしています。
また、Selectでは要素のインデックスを取得することができます。
var newList = list.Select((user, index) => new 
                          {
                              Id = user.Id,
                              Name = User.Name,
                              Index = index,
                          })
                  .ToList();
例では匿名クラスですが、任意の型に変換できるのでSelectはとても便利です。
もう一例見てみましょう。
var list = Enumerable.Range(1, DateTime.DaysInMonth(2018, 3))
                     .Select(n => new DateTime(2018, 3, n))
                     .ToList();
まず、DaysInMonthは指定した年月の日数を返します。
2018年3月なので、31です。
そして、Enumerable.Rangeでは、1から始まる31個の連続した数字のリストを取得しています。
それをSelectによってDateTime型に変換して取り出しています。
Linqでわりとなんでもできてしまうので、
ぜひ使えるようになりましょう。
