LINQ на.NET 2.0 времени выполнения

Просто выберите изображение в Xcode и в правой части, File inspector, в разделе «Target Membership» убедитесь, что выбран ваш проект. Еще одна вещь, которую вы можете сделать, это удалить и повторно вставить изображение и убедиться, что выбрано «Копировать элементы в случае необходимости» и «Добавить в целевые объекты» выбран ваш проект.

57
задан Keith 16 August 2008 в 13:40
поделиться

7 ответов

Существуют некоторые "Взломы", которые включают использование System.Core.dll от 3.5 Платформ, чтобы заставить его работать с .net 2.0, но лично я не хотел бы, используют такую несколько шаткую основу.

Посмотрите здесь: поддержка LINQ на.NET 2.0

  1. Создает новое консольное приложение
  2. , Сохраняют только Систему и Систему. Ядро как блоки, на которые ссылаются
  3. Копия Набора, Локальная для истинного для Системы. Ядро, потому что это не существует в.NET 2.0
  4. Использование запрос LINQ в Основном методе. Например, тот ниже.
  5. Сборка
  6. Копия весь вывод мусорного ведра к машине, где только.NET 2.0 установлена
  7. Выполнение

(Требует .net 2.0 SP1 и я понятия не имею, если связывание System.Core.dll нарушает EULA)

34
ответ дан Michael Stum 7 November 2019 в 15:51
поделиться

Странно, что никто не упомянул LINQBridge. Этот небольшой потрясающий проект является бэкпортом LINQ (IEnumerable, но без IQueryable) и его зависимости (Func, Действие, и т.д.) к.NET 2.0. И:

, Если Ваши ссылки проекта LINQBridge во время компиляции, то это свяжет с операторами запроса LINQBRIDGE; если это ссылается на Систему. Ядро во время компиляции, тогда это свяжет с Платформой 3.5's операторы запроса.

78
ответ дан Stefan Steiger 7 November 2019 в 15:51
поделиться

Я не уверен в C#.

я действительно знаю, однако, что можно записать, что VB LINNQ кодирует w/out эти 3,5 библиотеки, пока Вы используете компилятор VS 2008 года для предназначения для 2,0 платформ.

необходимо будет, однако, реализовать некоторые методы LINQ Ваш сам.

LINQ использует синтетическое преобразование для перевода запросов в исполняемый код. В основном это возьмет код как это:

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

и преобразовывают его в код как это:

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

Для функциональности LINQ, которая поставлется с 3,5 платформами, те методы реализованы как дополнительные методы или на IEnumerable или на IQueryable (существует также набор методов, которые работают над наборами данных также).

методы расширения IEnumerable по умолчанию определяются в Системе. Linq. Счетный и похожи на это:

<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 берут деревья выражений в качестве аргументов, а не лямбды. Они похожи на это:

 <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

версии дерева выражений позволяют Вам получить древовидное представление выражений, предоставленных пунктам, которые могут тогда использоваться для генерации кода SQL (или что когда-либо еще Вы хотите).

Вы могли, вероятно, создать свою собственную версию LINQ к объектам приблизительно через день или около этого. Это является все довольно прямым.

, Если бы Вы хотите использовать DLINQ, тогда вещи были бы трудными.

5
ответ дан Scott Wisniewski 7 November 2019 в 15:51
поделиться

В теории да, если Вы распределяете определенные блоки LINQ и любые зависимости. Однако это нарушает лицензирование Microsoft. Scott Hanselman записал сообщение в блоге [приблизительно 110] Развертывающийся ASP.NET MVC на ASP.NET 2.0 , который подобен тому, что Вы желаете сделать.

11
ответ дан John Downey 7 November 2019 в 15:51
поделиться

Нет, потому что, в то время как Вы думали, LINQ является действительно просто синтаксическим сахаром, он на самом деле в большой степени использовал деревья выражений - функция, отсутствующая в.NET 2.0.

, Что быть упомянутой.NET 3.5 только растет сверху.NET 2.0, и это - причина, почему IL не выглядит "отличающимся" или "особенным".

я не вижу оснований, почему Вы не должны только устанавливать.NET 3.5 Платформы. Все.NET 2.0 будет хорошо работать на нем, обещание:)

3
ответ дан Jon Limjap 7 November 2019 в 15:51
поделиться

Насколько я знаю, что библиотека LINQ только доступна начиная с платформы 3.0. Если бы Вы хотите использовать что-то подобное в платформе 2.0, необходимо было бы переписать его сами:) или находят подобную стороннюю библиотеку. Я только нашел немного информации здесь , но она не сделала убедил меня также.

2
ответ дан jdecuyper 7 November 2019 в 15:51
поделиться

Краткий ответ:

  • LINQ to Objects: да ( IEnumerable )
  • LINQ to SQL / Entities: нет ( IQueryable )
  • LINQ to XML / DataSets: еще нет?

См. этот вопрос о функциях .Net 3.5, доступных автоматически или с небольшими усилиями при ориентации на .Net 2.0 от VS2008.

В принципе, все, что является только "синтаксическим сахаром", и новые компиляторы (C # 3.0, VB 9.0) испускают как 2.0-совместимый IL, будет работать. Сюда входят многие функции, используемые LINQ, такие как анонимные классы, лямбда-выражения в качестве анонимных делегатов, автоматические свойства, инициализаторы объектов и инициализаторы коллекций.

Некоторые функции LINQ используют классы, интерфейсы, делегаты и методы расширения, которые существуют в новых сборках 3.5 (например, System.Core.dll). Распространение этих сборок является нарушением лицензии, но они могут быть реализованы повторно. Для использования методов расширения достаточно лишь объявить пустой System.Runtime.CompilerServices.ExtensionAttribute . LINQ to Objects опирается на IEnumerable расширения и несколько объявлений делегатов (семейства Action и Func ) и были реализованы в LINQBridge (как упоминалось в mausch ). LINQ to XML и LINQ to DataSets полагаются на LINQ to Objects, который, я думаю, также может быть реализован для .Net 2.0, но я еще не видел этого.

LINQ to SQL и LINQ to Entities требуют много новых классов ([ DataContext / ObjectContext , множество атрибутов, EntitySet , EntityRef

6
ответ дан 24 November 2019 в 19:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: