C#についてはわかりません。
ただし、VS 2008 コンパイラを使用して 2.0 フレームワークをターゲットにしている限り、3.5 ライブラリを使用せずに VB LINNQ コードを記述できることはわかっています。
ただし、一部の LINQ メソッドは自分で実装する必要があります。
LINQ は、構文変換を使用して、クエリを実行可能なコードに変換します。基本的には、次のようなコードになります。
dim q = from x in xs where x > 2 select x*4;
次のようなコードに変換します。
dim q = xs.where(function(x) x > 2).select(function(x) x * 4);
3.5 フレームワークに付属する LINQ 機能の場合、これらのメソッドは IEnumerable または IQueryable の拡張メソッドとして実装されます (データ セットでも動作するメソッドも多数あります)。
デフォルトの IEnumerable 拡張メソッドは System.Linq.Enumerable で定義されており、次のようになります。
<Extension()>
public function Select(of T, R)(source as IEnumerable(of T), transform as Func(of T, R)) as IEnumerable(of R)
'do the transformation...
end function
IQueryable 拡張メソッドは、ラムダではなく式ツリーを引数として受け取ります。それらは次のようになります。
<Extension()>
public function Select(of T, R)(source as IQueryable<T>, transform as Expression(of Func(of T, R))
'build a composite IQueryable that contains the expression tree for the transformation
end function
式ツリー バージョンを使用すると、句に指定された式のツリー表現を取得できます。これを使用して、SQL コード (またはその他必要なもの) を生成できます。
オブジェクトに対する独自のバージョンの LINQ を約 1 日ほどで作成できます。それはすべて非常に簡単です。
DLINQ を使用する場合は、少し難しくなります。