Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use LINQ in C++/CLI - in VS 2010/.Net 4.0

Just wondering if there is a way to use LINQ in C++/CLI. I found one post that was focused on VS 2008 and required a bunch of workarounds for the System::String class. I have seen some framework replacements on CodeProject, but I was wondering if there is a way to use it directly in C++/CLI. If you can, anyone have a good example?

like image 902
pstrjds Avatar asked Apr 13 '11 02:04

pstrjds


1 Answers

You can use the Linq methods that are defined in the System::Linq namespace, but you'll have to jump through a couple extra hoops.

First, C++/CLI doesn't support extension methods. However, the extension methods are regular methods defined on various classes in System::Linq, so you can call them directly.

List<int>^ list = gcnew List<int>(); int i = Enumerable::FirstOrDefault(list); 

Second, C++/CLI doesn't support lambda expressions. The only workaround is to declare an actual method, and pass that as a delegate.

ref class Foo { public:     static bool GreaterThanZero(int i) { return i > 0; }      void Bar()     {         List<int>^ list = gcnew List<int>();         int i = Enumerable::FirstOrDefault(list, gcnew Func<int, bool>(&Foo::GreaterThanZero));     } } 
like image 125
David Yaw Avatar answered Oct 03 '22 05:10

David Yaw