Вы имеете в виду "Language Integrated Query" или пространство имен System::Linq
?Каждый мой знакомый программист предпочитает синтаксис вызова функции вместо синтаксиса LINQ.
C ++ / CLI не поддерживает синтаксис LINQ.В прошлом базы данных поддерживали форму запросов с интегрированным языком, которая называлась Embedded SQL, которая в наши дни практически устарела.Внедрение SQL (а позднее и LINQ-to-SQL) было глупой идеей, с тех пор люди поняли, что логика запросов к базе данных должна находиться в базе данных, а не смешиваться с бизнес-логикой.
LINQ-to-объекты - более полезная идея, но синтаксис SQL просто неуместен.Поэтому программисты на C # склонны вызывать функции библиотеки LINQ напрямую.
C ++ на самом деле не нуждается в LINQ, потому что у нас есть шаблоны.Стандартные библиотечные алгоритмы, которые становятся возможными с помощью шаблонов, представляют собой расширенный набор преимуществ LINQ: они могут быть специализированы для конкретных контейнеров, но вы получаете хорошую реализацию по умолчанию без какой-либо помощи от класса контейнера.И они компилируются в гораздо более эффективный код, потому что разрешение перегрузки происходит после специализации (в отличие от универсальных).Хорошо, шаблоны не так хороши для отражения во время выполнения, как универсальные, но методы расширения C # тоже плохо работают с отражением во время выполнения.Самым большим недостатком стандартных алгоритмов C ++ была многословность написания функторов предикатов, но C ++ 0x вводит лямбда-выражения, которые позаботятся об этом.
Действительно, C ++ / CLI нужна версия стандартных алгоритмов, которыеработает на .NET контейнерах.И здесь это .Например, метод LINQ Where
очень близко соответствует find_if
.Теперь нам просто нужно, чтобы Microsoft поторопилась и реализовала окончательную спецификацию C ++ 0x.