Есть ли способ использовать синтаксис запроса LINQ с проектами .NET 3.0?

У меня есть проект, который можно развернуть только на сервере с .NET 3.0. Я отчаянно хочу использовать LINQ, чтобы упростить мучительно утомительную логику. Есть ли простой способ сделать это? Я соглашусь на любой синтаксис.

Большое спасибо


person Tushar S    schedule 27.07.2010    source источник


Ответы (3)


Поскольку все версии .NET с 2.0 по 3.5 работают на CLR 2.0, весь материал LINQ — это просто набор библиотек. Если вы включите библиотеки DLL, отсутствующие в вашей версии фреймворка, все будет работать нормально.

Как говорит Патрик, ключевыми DLL 3.5 являются System.Core.dll (предоставившая System.Linq) и System.Data.Linq.dll (для Linq-to-SQL).

Если вы это сделаете, я думаю, вам нужна System.dll по крайней мере из .NET 2.0SP1, я думаю.

LINQBridge, как цитирует Марк, работает путем повторной реализации функциональности, но, как мне кажется, только для Linq-to-Objects.

Другой вариант — использовать те же библиотеки DLL (System.Core.dll и System.Data.Linq.dll) из проекта Mono. Они заново реализовали весь LINQ. Материал Linq-to-Sql, возможно, немного незрелый, но у него есть преимущество работы с другими базами данных, а не только с MSSQL.

http://mono-project.com/Main_Page

Это снимает любые вопросы о законности распространения Microsoft DLL вместе с вашим приложением.

person Justin    schedule 27.07.2010
comment
Когда я говорю, что в Mono реализован весь LINQ, я имею в виду, что он поддерживает Linq-to-Objects, Linq-to-XML и Linq-to-Sql (через проект DBLinq). Последняя версия Mono (по состоянию на июль 2010 г.) — 2.6.7, и именно там я буду получать сборки. - person Justin; 28.07.2010
comment
Это лучший ответ на вопрос на данный момент! - person Mike Atlas; 28.07.2010
comment
О, я должен добавить, что вам также понадобится System.Xml.Linq.dll, если вы хотите сделать Linq-to-XML. Патрик обманул меня своими способностями джедая. - person Justin; 28.07.2010

Коллега успешно использовал LINQBridge.

person Marc    schedule 27.07.2010
comment
вау хороший инструмент, проверю это - person Nealv; 28.07.2010
comment
Я думаю, что ответ @Justin лучше (ссылка на библиотеки Mono). Если бы это был я, я бы тоже очень хотел иметь LINQ to XML. Кроме того, сообщество Mono большое и активное, тогда как оно реализовано только одним человеком, и я даже не могу сказать, поддерживается ли оно. Лицензия MIT на библиотеки также делает их пригодными для использования в большинстве корпоративных сценариев. - person Mike Atlas; 28.07.2010
comment
Так почему я получил -1? Потому что вам больше понравился другой ответ? - person Marc; 28.07.2010
comment
Я думаю, это не заслуживает отрицательного голоса. Если хочешь, я удалю это, если ты внесешь правки в пост. - person Mike Atlas; 28.07.2010
comment
@Майк, если ты не думаешь, что это отвечает на вопрос, оставь отрицательный голос; Меня не волнует репутация MMORPG. Но мое мнение, что это решает проблему просто отлично. Но, по крайней мере, оставьте комментарий, почему вы считаете, что это не решает проблему, как указано. Предупреждение о том, что это LINQ to Objects, указано как на указанной странице, так и в вашем исходном комментарии. - person Marc; 28.07.2010

Взято с http://codebeat.wordpress.com/2008/06/23/using-linq-in-net-30/:

  1. Сначала настройте целевую структуру проектов с помощью Linq to .NET 3.0. Ссылки на .NET 3.5 будут удалены.
  2. Затем скопируйте System.Data.Linq.dll и System.Core.dll в решение, куда вам удобнее (в моем случае, в корневую папку).
  3. Добавьте их в качестве ссылок во все соответствующие проекты. Visual Studio предупредит о том, что для сборки требуется более поздняя версия фреймворка. Нажмите Да.
  4. Задайте для свойства SpecificVersion ссылок значение true. Это предотвратит ошибки компиляции.

Я попробовал это, и это сработало, но остерегайтесь предупреждения Майка Атласа о юридических последствиях развертывания этих двух файлов.

person Patrick McDonald    schedule 27.07.2010
comment
На самом деле это вызывает юридические проблемы с распространением библиотек Microsoft. Будьте осторожны, делая это. - person Mike Atlas; 28.07.2010
comment
Этот на самом деле не работает для меня. Visual Studio удаляет библиотеки DLL System.Core и System.Data.Linq после изменения целевой платформы с 3.5 на 3.0. - person Tushar S; 28.07.2010
comment
@Silver Gun, вы пытались добавить ссылки обратно после перехода на 3.0? - person Patrick McDonald; 29.07.2010
comment
@Patrick McDonald - Да, но Visual Studio выделяет DLL из несовместимых или более новых версий фреймворков. - person Tushar S; 03.08.2010
comment
Поскольку вы уже приняли другой ответ, я не уверен, почему вы все еще смотрите на этот. Однако похоже, что вы пропустили шаг 2 выше, вам нужно скопировать 2 dll в папку вашего проекта/решения и добавить их в качестве ссылок на вкладке «Обзор» в диалоговом окне «Добавить ссылки», вы не можете добавить их с вкладки .NET. . - person Patrick McDonald; 05.08.2010
comment
Привет, Патрик. Попробую это. Я принял решение Mono, но хотелось бы чего-то попроще без новой установки. Твое это. знак равно - person Tushar S; 06.08.2010