{{category C#}} LINQって内包表記なんだ! これは俄然面白い。 「リレーショナルデータベースや XML に対する操作をプログラミング言語に統合するもの」というのはLINQの説明の3分の1程度でしかない(かつわかりにくいし、厳密にはまちがっている)。 LINQではクエリ結果がオブジェクトとして返されるが、それはイテレーターのようだ。 おそらくデータベースでは行オブジェクトなどを対象とするのだろうし、集合を扱う場合には集合の各メンバーを対象とする。 * 内包表記なので、集合をイテレーションの対象とする。 * そこから要素を1つずつ抜き出し、それぞれの要素データに対してフィルタをしたり処理をする。 * その結果をまたイテレーターのオブジェクトとして返す、というのがLINQ。 「何を対象として操作するのか」という頭で処理を記述する必要がある。 from 句で指定するのが対象とする個々の「何」。 in の後に指定するのが「何」が所属する集合。 where 句で集合から取り出す「何」をフィルタする条件を指定できる。 select 句でLINQが最終的に返すイテレーターに含めるデータを指定する。「何」をそのまま返したり、「何」を加工して返したりするのが普通。 結局LINQは集合を簡潔に扱える強力な機構を言語に備え付ける、という課題に対処しているだけであり、その構文をSQLから拝借してきている、というだけだ。 その結果、「クエリを言語に統合したかのように見える」ということだ。 SQLが集合を扱うという問題を目的とした構文である、ということを理解できていないと、LINQが何のために存在しているのかわけがわからないだろう。 {{lastmodified}}