Пожалуйста, смотрите здесь:
Использование синтаксиса C # 3.0 (.Net 3.5) в приложении .Net 2.0
Для полного ознакомления с тем, что вы можете и не можете делать, ориентируясь на .NET 2.0 Framework и используя C # 3.0.
В итоге:
Методы расширения работают подобным образом, однако для их работы требуется «System.Runtime.CompilerServices.ExtensionAttribute», и этот тип находится в DLL-библиотеке System.Core (которая не является строго частью .NET 2.0 рамки).
Синтаксис запроса нельзя использовать, так сказать, «из коробки», однако его можно использовать, если используется сторонняя DLL (например, LINQBridge ). Эта DLL эффективно реализует многие «недостающие» типы, которые необходимы для выполнения LINQ при нацеливании на платформу .NET 2.0. Он также реализует тип «ExtensionAttribute», необходимый для работы методов Extension, поэтому простое добавление / ссылка на DLL-библиотеку LINQBridge из вашего проекта активирует LINQ, синтаксис / выражения запросов и методы расширения!