LINQ в Win32 DELPHI

Можно ли использовать LINQ в приложениях win32 DELPHI

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
11
0
6 398
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Да и нет. LINQ действительно можно рассматривать как два разных элемента.

Первый - это синтаксис SQL-подобных запросов. Это то, что позволяет вам написать на C# следующее.

var query = from it in "foobar" select Char.ToUpper(it);

Чтобы delphi могла использовать эту версию LINQ, необходимо добавить явную поддержку синтаксиса. AFAIK этого не существует.

Однако под капотом все запросы LINQ преобразуются в набор выражений запросов. Обычно они включают интенсивное использование лямбда-выражений и замыканий. Приведенный выше код эквивалентен следующей версии синтаксиса, отличной от SQL.

var query = "foobar".Select(x => Char.ToUpper(x));

Я не знаю уровня поддержки лямбда-выражения или делегата в Delphi, но доступ к LINQ в этом методе должен быть возможен из Delphi.

- у вас небольшая ошибка, вам нужно заменить «it» на «x». В Delphi Win32 отсутствуют почти все функции, обеспечивающие работу второго примера. Нет VAR. string и char не являются объектами, и у вас нет коротких синтаксических лямда-выражений. Так что если ты сможешь это сделать, это будет намного уродливее.

Martin Liesén 04.01.2009 03:50
Ответ принят как подходящий

Delphi 2009 имеет поддержку дженерики, помощники класса и анонимный метод, но не поддерживает лямбда, методы расширения или вывод типа. Лямбда-выражения, вероятно, появятся в будущей версии Delphi, но их еще нет в официальной дорожной карте (мы надеемся, что скоро появится новая). Также Delphi для Win32 не имеет доступа ко всем библиотекам LINQ.

Итак, краткий ответ - НЕТ, вы не можете использовать LINQ в Win32 Delphi. Как бы то ни было, вы можете делать что-то подобное, и вы можете технически даже получить доступ к LINQ через COM (как вы можете с любыми классами .NET), но это как бы побеждает точку без классного синтаксиса LINQ.

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

Я бы предложил использовать RemObject Data Abstract или аналогичный.

Ммм ... разве методы расширения и помощники классов не являются двумя именами для одного и того же? Единственная разница в том, что один из них используется в Delphi, а другой - в C#, или есть какие-то важные функции, которые я упускаю?

Mason Wheeler 05.01.2009 17:42

Помощники класса применяются только к одному классу. Методы расширения немного шире. Они очень похожи, и вы, вероятно, могли бы сделать это с помощью Class Helpers, но для этого потребуется больше кода.

Jim McKeeth 16.04.2009 03:37

Я не знаю, в какой версии Delphi он появился, но в XE у нас есть «объектные функции», которые могут быть выполнены в виде замыканий или почти одинаковых лямбда-выражений.

Итак, с сегодняшнего дня (26.06.2011) возле возможно иметь LINQ-подобные выражения в Delphi (2-я форма).

Что вы имеете в виду под «объектными функциями»?

Stefan Glienke 26.06.2011 13:48

Другие вопросы по теме