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