C#のLinqを使ってみる(4)

こんばんは。きわさです。

ここのところ、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でわりとなんでもできてしまうので、
ぜひ使えるようになりましょう。

スポンサーリンク