LoginSignup
0
0

【C#】Linq頻出のSelectメソッド、Whereメソッドを使おう!

Posted at

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と記述されている。
何故、実際と異なるのかについては別途調べる。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0