情報は出まわっている気もするが・・・。
6月の .NET 勉強会 で LINQ の話(入門)をするので、参考資料として書いておきます。
var q = nw.Customers
.Where(c => c.Country == "UK")
.Select(c => new { c.CustomerID, c.CompanyName, c.City });
は、
var q = nw.Customers
.Where(delegate(Customers c) { return c.Country == "UK"; })
.Select(delegate(Customers c) { return new { c.CustomerID, c.CompanyName, c.City }; });
を簡略化した記法ということですね(長ったらしくて見慣れない式だけど、当然ちゃんと動きます)。
つまり、
delegate(Customers c) { return c.Country == "UK"; }
という匿名メソッドを省略して書いたものが
c => c.Country == "UK"
というラムダ式です。
Customers という型まで省略できてしまうので(c の型は Customers に決まってる!つまり型推論)、「いきなり出てきた "c" って何?」という疑問まで湧いてきて、さらにわからなくなってしまいがち。
難しそうだなと感じたら、かみ砕いて考えてみるといいですね。
匿名メソッドであることがわかると、ラムダ式もそんなに難しくないと思える(かもしれない、実際には難しいけど)。
まあ匿名メソッドがわからないと、その時点でアウトですが。
このあたり、じっくり取り組むときっと楽しいんですが、当日の限られた時間ではここまで説明できないので、補足としてブログに書いておきます。