「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