「VS 2008に対する反応はかつてないほど大きい」,Microsoftの.Net Developer Platform
General Managerが語る
http://itpro.nikkeibp.co.jp/article/NEWS/20080122/291702/
ここで述べられている、ラムダ式の解説Blogはここ
New "Orcas" Language Feature: Lambda Expressions
http://weblogs.asp.net/scottgu/archive/2007/04/08/new-orcas-language-feature-lambda-expressions.aspx
chicaさんの翻訳がなかった(TT)
VBのラムダ式は以下を参照
(MSDN Magazine)
http://msdn.microsoft.com/msdnmag/issues/07/09/BasicInstincts/default.aspx?loc=jp
ポイントはここ
LINQを用いたクエリ式
var products = from p in db.Products
where p.categoryId == 2
select p;
ラムダ式用いたクエリ式
var products = db.Products.where (p => p.CategoryId == 2);
このラムダ式に抵抗があるちゅうことですな!
こう考えましょう。
このぶぶん
p => p.CategoryId == 2;
省略されている型推論の部分を補うとこうなって、
(int p) => p.CategoryId == 2;
匿名メソッドに戻すとこうなる
delegate(int p)
{
return p.CategoryId == 2;
}
つまりラムダ式は
匿名メソッドの引数リスト => リターンに書いてる式;
というイメージでみると、ちょっとわかりやすくなってくる。
params => expression
ってことですね。
色つけるとわかりやすいかな
delegate(int p)
{
return p.CategoryId == 2;
}
が、こうなる
p => p.CategoryId == 2;
で。
C#でこのラムダ式を
p => p.CategoryId == 2;
VBで書くと
Function(p) p.CategoryId = 2
になるんかな。。。
ちゅうことはVBでLINQを用いたクエリ式を書くとこんなかんじ
Dim q = From p In db.Products _
p.CategoryId = 2 _
Select p