LINQ to Objects を使ってみよう

LINQ to Objectとは?

LINQとは.NET Frameworkに含まれる技術で、クエリを行う1つのパターン。

 

LINQ to Objectは、メモリ上のオブジェクトをクエリするプロバイダ。

(他にも LINQ to SQL, LINQ to XMLなどがある)

 

LINQ to Objectは、コレクションに対して作用し一括して何かの処理を行うことができる。

厳密には、IEnumerable<T>インターフェースに作用するためListや配列に対しても利用できる。

何が嬉しいか?

反復処理がスマートに書ける。強引かつ簡単に表現するとfor文が消せる。

(for文は終了条件やインデックスアクセスでミスを誘発するので好きじゃない)

 

 

例)配列の値を2倍する

 

int[] a = { 1, 2, 3 }

 

for(int i = 0; i < a.Length; i++)

{

    a[i] *=2;

}

 

 

a = a.Select(n => n * 2).ToArray();

 

 

 

例)配列から奇数を取得

 

int[] a = { 1, 2, 3 }

 

var list = new List<int>();

for(int i = 0; i < a.Length; i++)

{

    if(a[i] % 2 != 0)

    {

        list.Add(a[i]);

    }

}

 

 

var list = a.Where(n => n % 2 != 0).ToList();

 

 

 

 

こんな感じでソースコードの可読性が上がる。コード量も減る。

 

 

コード量が減ると生産性が上がり、ミスも減り、テストも減る。

ループ制御に使っていた神経が、もっと人間がやるべき大切なことに使える。

 

ここしばらく、業務でC言語に触れる機会が多かった。

改めて感じたがやっぱりC#は便利だ。