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