|
|
連載:[完全版]究極のC#プログラミング
Chapter17 LINQ to SQL
川俣 晶
2010/04/14 |
|
|
17.5 LINQ to SQLとメソッド構文
リスト17.1は、クエリ式を次のように書き直せば、メソッド構文になる。
var query = db.PointList.Where((n) => n.point >= 80);
|
|
当然ではあるが、このように書き直しても、結果は同じである。同じクエリが送信され、同じ結果になる。クエリ式はメソッド構文の糖衣構文だからである。メソッド構文で書くと、このラムダ式がローカルで実行されないことが直感的にわかりにくいかもしれないが、これも、式ツリー経由でSQL文に翻訳されるわけである。
ちなみに、このWhereメソッドは、LINQ to Objectで使われたWhereメソッドとは別物のSystem.Linq.QueryableクラスのWhereメソッドである。このメソッドは次のシグネチャを持つ。第2引数の型がExpression型であることから、このメソッドが確かに「式ツリー」を受け取っていることがわかるだろう。
Where<TSource>(IQueryable<TSource>, Expression<Func<TSource, Boolean>>)
|
|
System.Linq.QueryableクラスのWhereメソッドのシグネチャ |
Insider.NET 記事ランキング
本日
月間