Nie jestem pewien co do C#.
Wiem jednak, że można napisać kod VB LINNQ bez biblioteki 3.5, o ile używa się kompilatora VS 2008 do kierowania ramą 2.0.
Będziesz jednak musiał sam wdrożyć niektóre metody LINQ.
LINQ wykorzystuje przekształcenie syntetyczne do tłumaczenia zapytań na kod wykonywalny.Zasadniczo, to zajmie kod tak:
dim q = from x in xs where x > 2 select x*4;
i przekształcić go w kodzie tak:
dim q = xs.where(function(x) x > 2).select(function(x) x * 4);
Dla funkcjonalności LINQ, że statki o 3,5 ram, metody te są implementowane jako metody wewnętrznych na albo IEnumerable, albo IQueryable (jest też kilka metod, które działają również na zbiory danych).
Domyślne IEnumerable rozszerzenie metod są zdefiniowane w System.Linq.Enumerable i wyglądać tak:
<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
W IQueryable rozszerzenie metod wziąć wyrażeń drzew jako argumenty, zamiast lambda. Wyglądają tak: wersje drzewo
<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
Wyrażenie pozwalają uzyskać reprezentację drzewa wyrażeń określonych klauzul, które mogą być następnie wykorzystywane do generowania kodu SQL (czy co tam jeszcze chcesz).
Prawdopodobnie można utworzyć własną wersję LINQ do obiektów w około dzień. Wszystko jest całkiem proste.
Jeśli chcesz używać DLINQ, to będzie trochę trudniej.
redystrybucja System.Core.dll jest naruszeniem licencji Microsoft – Lucas
po zbudowaniu i uruchomieniu, nie ma nic w folderze bin, z wyjątkiem folderu debugowania. :(Buduję aplikację Console w .Net 4.0 visual studio 2010. –
@ JonasT Jeśli korzystasz z .net 4.0, to w ogóle nie dotyczy ciebie, ponieważ chodzi o .net 2.0 używając LINQ. oddzielne pytanie, podając szczegóły dotyczące konfiguracji –