.NET 2.0 Runtime üzerinde LINQ

oy
53

Bir LINQ sadece .NET 2.0 çalışma zamanı yüklü olduğu bir makinede uygulama çalıştırmak etkin miyim?

Teoride, LINQ sözdizimsel şeker başka bir şey değildir ve bu .NET 2.0 olurdu olarak ortaya çıkan IL kodu aynı görünmelidir.

Nasıl .NET 3.5 kütüphanelerini kullanmadan LINQ yazabilir? .NET 2.0 üzerinde çalışan?

Oluştur 05/08/2008 saat 13:03
kaynak kullanıcı
Diğer dillerde...                            


9 cevaplar

oy
76

Hiç kimse bu sözü var garip LINQBridge . Bu küçük müthiş proje (IQueryable olmadan ancak, IEnumerable) ve bağımlılıkları (işlev, Aksiyon, vb) .NET 2.0 LINQ bir backport olduğunu. Ve:

Proje derleme sırasında LINQBridge başvuruyorsa, o zaman LINQBridge sorgusu operatörlerine bağlanacak; o derleme sırasında System.Core başvuru yapıyorsa, o zaman Framework 3.5 sorgu operatörleri bağlanacaktır.

Cevap 27/12/2008 saat 03:51
kaynak kullanıcı

oy
32

Orada o .net 2.0 ile çalışacak hale getirmek için 3.5 Framework bir System.Core.dll kullanmayı içerir bazı "Hacks", ama şahsen ben böyle biraz titrek bir temel kullanmak istemem.

Buraya bakın: .NET 2.0 üzerinde LINQ destek

  1. Yeni bir konsol uygulaması oluşturun
  2. başvurulan derlemeler olarak sadece Sistem ve System.Core tutun
  3. o .NET 2.0 var olmadığından, System.Core için true Kopya yerel ayarla
  4. Ana yönteminde bir LINQ sorgusu kullanın. Bir Aşağıdaki örnek için.
  5. İnşa etmek
  6. Sadece .NET 2.0 yüklü olduğu bir makineye tüm bin çıkışını kopyala
  7. Koşmak

(.net 2.0 SP1 gerektirir ve ben System.Core.dll donatılacak EULA'sını ihlal ediyorsa hiçbir fikrim yok)

Cevap 05/08/2008 saat 13:07
kaynak kullanıcı

oy
11

Teoride evet, sağlanan size LINQ belirli meclisleri ve herhangi bağımlılıkları dağıtın. Ancak o Microsoft'un lisans ihlal etmektedir. Scott Hanselman hakkında bir blog yazısı yazdı ASP.NET 2.0 üzerinde dağıtma ASP.NET MVC yapmak isteyen ne benzer.

Cevap 05/08/2008 saat 13:07
kaynak kullanıcı

oy
7

Sen LINQ .NET 2.0 üzerinde çalışan almak için mono dan LINQ kaynaklar (Linux için .NET) kullanabilir.

IEnumerable<T> : yes 
IQueryable<T>  : yes
LINQ to XML : has been working in the trunk, but due to further additions, the trunk doesn't compile anymore

Birisi burada yapacağını yaptı:
LINQ .NET 2.0 için

Cevap 04/03/2011 saat 19:51
kaynak kullanıcı

oy
6

Kısa cevap:

  • Nesneler LINQ: evet ( IEnumerable<T>)
  • SQL / varlıkları için LINQ: hayır ( IQueryable<T>)
  • Henüz: XML / LINQ DataSet için?

Bkz bu soruyu VS2008 gelen .Net 2.0 hedefleme otomatik veya çok az çaba ile mevcut .Net 3.5 özellikleri hakkında.

2.0 uyumlu IL çalışacak şekilde Temelde sadece "sözdizimi şeker" ve yeni derleyiciler (C # 3.0, VB 9.0) 'dir şey yayarlar. Bu tür anonim sınıflar, anonim delegeler, otomatik özellikleri, nesne başlatıcıları ve tahsilat başlatıcıları olarak lambdas olarak LINQ tarafından kullanılan birçok özellik içerir.

Bazı LINQ özellikleri sınıflar, arayüzler, delege ve (örneğin System.Core.dll gibi) yeni 3.5 meclisleri yaşayan uzatma yöntemleri kullanın. Bu derlemeleri yeniden dağıtılması lisans ihlali olduğunu, ancak reimplemented edilebilir. Kullanılması uzatma yöntemleri boş bir beyan sadece ihtiyaç System.Runtime.CompilerServices.ExtensionAttribute. Nesneler LINQ dayanıyor IEnumerable<T>uzantıları ve birkaç temsilci bildirimleri ( Action<T>ve Func<T>aileleri) ve uygulamaya konulmuştur LINQBridge (olarak MAUSCH söz). XML ve LINQ LINQ DataSet için ben de .Net 2.0 için uygulanabilecek tahmin LINQ nesnelere güvenmek, ama bu henüz bitmiş görmedim.

SQL ve LINQ Objeler'de LINQ (birçok yeni sınıflar gerektiren DataContext/ ObjectContext, niteliklerin bir sürü EntitySet<T>, EntityRef<T>, Link<T>, IQueryable<T>, vs) ve ifade nasılsa reimplemented bile, muhtemelen çalışması için en az .Net 2.0 SP1 gerektirir, ağaçlar,.

Cevap 19/05/2009 saat 17:19
kaynak kullanıcı

oy
5

Ben C # hakkında emin değilim.

Sana 2.0 framework hedef VS 2008 derleyici kullanmak gibi 3.5 kütüphaneler dışında / sürece w VB LINNQ kodu yazabilirsiniz Ancak, biliyoruz.

Ancak, kendini LINQ yöntemlerden bazılarını uygulamak zorunda kalacaktır.

LINQ çalıştırılabilir koda sorguları çevirmek için bir syntatic dönüşümü kullanır. Temelde, böyle bir kod alacaktır:

dim q = from x in xs where x > 2 select x*4;

ve bunun gibi koduna dönüştürmek:

dim q = xs.where(function(x) x > 2).select(function(x) x * 4);

3.5 çerçeve gemi, bu yöntemlerin IEnumerable veya IQueryable ya uzantı yöntemi olarak uygulanmaktadır LINQ işlevselliği için (çok verilere setleri çalışmak yöntemlerinin bir demet de var).

Varsayılan IEnumerable uzantısı yöntemleri System.Linq.Enumerable tanımlanan ve bu gibi bakın:

<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 uzatma yöntemleri yerine lambdas daha argümanlar olarak ifadeleri ağaçları alır. Onlar şuna benzer:

 <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

ifade ağacı versiyonları SQL kodunu (veya hiç başka ne istediğiniz) üretmek için kullanılabilecek maddelere verilen ifadelerin bir ağaç gösterimini almak için olanak sağlar.

Muhtemelen yaklaşık bir-iki gün içinde nesnelere LINQ kendi sürümünü oluşturabilir. Her şey oldukça yalındır bu.

Eğer DLINQ'nun kullanmak istiyorsanız, o zaman işler biraz daha zor olacaktır.

Cevap 10/10/2008 saat 22:30
kaynak kullanıcı

oy
3

LINQ düşünce ise Hayır, çünkü, gerçekten aslında yoğun olarak kullanılan ifade ağaçları sadece sözdizimsel şeker - bir özellik .NET 2.0 mahrum.

Yani .NET 3.5 sadece .NET 2.0 üstünde kurar söyleniyor ve IL "farklı" veya "özel" görünmüyor nedeni de budur.

Ben sadece .NET 3.5 Framework yüklemek olmamalıdır bir neden görmüyorum. Üzerinde ince çalışacak Herşey NET 2.0, söz :)

Cevap 05/08/2008 saat 13:07
kaynak kullanıcı

oy
2

Gibi bildiğim kadarıyla LINQ kütüphane çerçevesi 3,0 beri kullanılabilir. Eğer çerçeve 2.0 benzer bir şey kullanmak istiyorsanız, bunu kendiniz rewritte gerek :) veya benzer üçüncü taraf kitaplığı bulur. Ben sadece biraz bilgi buldum burada ama ya beni ikna etmedi.

Cevap 05/08/2008 saat 13:14
kaynak kullanıcı

oy
0

Sen kullanabilirsiniz linqbridge .net 2.0 için

Cevap 25/03/2015 saat 20:05
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more