ループは手続き的な構文だが、LINQのクエリは宣言的な構文である。できることは同じでも、クエリ構文を使ったほうが、よりコードの意味が伝わりやすくなる。
以下のコードはループを使った例である。
public static int[] SquareArray(int size)
{
var foo = new int[size];
for (var i = 0; i < foo.Length; i++)
foo[i] = i * i;
return foo;
}
同じ処理を、LINQを使うと以下のように書くことができる。
public static int[] SquareArray(int size)
{
return Enumerable.Range(0, size)
.Select(n => n * n)
.ToArray();
}
一般に、コレクションを操作するロジック(絞り込み、並び替え等)が複雑になる場合は、ループよりもLINQの方がわかりやすいコードを書くことができる。