こんばんは。きわさです。
ここのところ、C#のLinqの話が多いです。
今回はSelectについてです。
Selectは、ある要素のリストから新たな形式でリストを作ることができます。
1 2 3 4 5 6 7 | 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では要素のインデックスを取得することができます。
1 2 3 4 5 6 7 | var newList = list.Select((user, index) => new { Id = user.Id, Name = User.Name, Index = index, }) .ToList(); |
例では匿名クラスですが、任意の型に変換できるのでSelectはとても便利です。
もう一例見てみましょう。
1 2 3 | 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でわりとなんでもできてしまうので、
ぜひ使えるようになりましょう。