Pythonのリスト内包表記とLINQのクエリ構文を比べてみた
元ネタ→Pythonのリスト内包表記で色々な数列を作ってみた - アジャイルSEを目指すブログ
デブサミ2008でも「なんでリスト内包みたいにしなかったの」と聞かれていたぐらいなんで、リスト内包とクエリ構文は似たところがある。
クエリ構文の方が長いけど、好きに改行・インデントできる。
それに、letが使えるのも地味に便利(fibを見よ)。
var l = from x in Enumerable.Range(0, 10) select x; var power = from x in Enumerable.Range(0, 10) select x * x; var even = from x in Enumerable.Range(0, 10) where x % 2 == 0 select x; var table = from x in Enumerable.Range(1, 9) select (from y in Enumerable.Range(1, 9) select x * y); var prime = from x in Enumerable.Range(2, 99) where !(from y in Enumerable.Range(2, x - 2) where x % y == 0 select y).Any() select x; var fib = from x in new[] { new[] { 0, 1 } } from y in Enumerable.Range(1, 18) let x0 = x[0] let x1 = x[1] let x2 = x[0] + x[1] where ((x[0] = x1) + (x[1] = x2) > 0) select x0;