Linqとは
「ListやArrayのような様々なコレクション型のデータを加工したり、特定の値だけを取り出したりする為の機能」
メリット
ListやArrayなどの異なるオブジェクトでも同一の記法でデータ操作をすることができるので、可読性が向上する。
何故使うことが出来るのか?
Linqの代表的なメソッドであるSelectやWhereは
インターフェイスIEnumerableに定義がされている。
そして、ListやArrayではIEnumerableを実装しているので、Linqのメソッドを使うことが出来る。
使用例
Sample
class Program
{
public static void Main()
{
var list = new List<int> { 20, 50, 70, 100, 101 };
var result1 = list.Where(x => x % 2 == 0);
Console.WriteLine("=====where of result=====");
foreach (var x in result1)
{
Console.WriteLine(x);
}
var result2 = list.Select(x => x * 2);
Console.WriteLine("=====select of result=====");
foreach (var x in result2) {
Console.WriteLine(x);
}
}
}
実行結果
=====where of result=====
20
50
70
100
=====select of result=====
40
100
140
200
202
whereメソッド
シーケンスをフィルター処理する為のメソッド。
要素を1つずつ取り出して、引数として渡した関数で条件を満たしているかをテストする。
実行結果がtrueになるものだけで新たなシーケンスを作成する。
whereメソッドの引数として渡してるラムダ式の引数xに、変数listの中身が渡される。
返り値はIEnumerable。
selectメソッド
シーケンスを加工する為のメソッド。
要素を1つずつ取り出して、引数として渡した関数の処理を実行する。
返り値はIEnumerable。
課題
result1の型がSystem.Linq.Enumerable.WhereListIteratorだったが、
ドキュメントではIEnumerableと記述されている。
何故、実際と異なるのかについては別途調べる。
参考