検索 English (United States)  日本語 (日本)
2012年5月19日 ..:: ソフトウェア開発 & IT » ブログ 技術との戯れ (on seosoft.net - 更新終了) ::..   ログイン

Microsoft MVP for Visual C#

Microsoft MVP for Visual C#
(Jan 2009 - Dec 2011)

-
 カテゴリ 最小化

  
 カレンダー 最小化

  
 旧ブログ 最小化

  
-
DotNetNuke.jp
 技術との戯れ 最小化
6 19

Written by: 瀬尾 佳隆
2008/06/19 17:27

情報は出まわっている気もするが・・・。
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" って何?」という疑問まで湧いてきて、さらにわからなくなってしまいがち。

難しそうだなと感じたら、かみ砕いて考えてみるといいですね。
匿名メソッドであることがわかると、ラムダ式もそんなに難しくないと思える(かもしれない、実際には難しいけど)。
まあ匿名メソッドがわからないと、その時点でアウトですが。
このあたり、じっくり取り組むときっと楽しいんですが、当日の限られた時間ではここまで説明できないので、補足としてブログに書いておきます。

Tags:

Your name:
Title:
Comment:
Security Code
Enter the code shown above in the box below
Add Comment    取消  

  
-
 ブログ検索 最小化

  
-
Microsoft Tech Fielders
-
Copyright 2000-2011 by Seosoft   使用条件  プライバシー
DotNetNukeョ is copyright 2002-2012 by DotNetNuke Corporation