Réponse courte:
-
LINQ to Objects: oui (
IEnumerable<T>
)
-
LINQ to SQL/Entités: n (
IQueryable<T>
)
- LINQ to XML/ensembles de données: pas encore?
Voir cette question à propos de .Net 3.5 fonctionnalités disponibles automatiquement ou avec peu d'effort lors de la cibler .Net 2.0 à partir de VS2008.
En gros, tout ce qui n'est que "la syntaxe de sucre" et les nouveaux compilateurs (C# 3.0, VB 9.0) émettent 2.0-compatible IL va travailler. Cela comprend de nombreuses fonctionnalités utilisées par LINQ comme les anonymes, les classes, les lambdas comme délégués anonymes, automatique propriétés, les initialiseurs d'objets, et les initialiseurs de la collection.
Certains LINQ caractéristiques de l'utilisation des classes, des interfaces, des délégués et des méthodes d'extension qui vivent dans la nouvelle 3.5 assemblées (comme System.Core.dll). La redistribution de ces assemblées est une violation de licence, mais ils pourraient être réimplémentée. À l'aide de méthodes d'extension devez seulement que vous déclarez un vide System.Runtime.CompilerServices.ExtensionAttribute
. LINQ to Objects s'appuie sur IEnumerable<T>
extensions et plusieurs délégué (déclarations de l' Action<T>
et Func<T>
des familles) et ont été mis en œuvre dans LINQBridge (comme mausch mentionné). LINQ to XML et LINQ to jeux de données s'appuient sur LINQ to Objects, qui je pense pourrait également être mis en œuvre pour .Net 2.0, mais je n'ai pas vu ce fait encore.
LINQ to SQL et LINQ to entities nécessitent de nombreuses nouvelles classes (DataContext
/ObjectContext
, beaucoup d'attributs, EntitySet<T>
, EntityRef<T>
, Link<T>
, IQueryable<T>
, etc) et des arbres d'expression, qui, même si d'une certaine façon réimplémentée, aura probablement besoin d'au moins .Net 2.0 SP1 de travail.