来自托管C ++ / CLI的ObjectQuery扩展

时间:2012-07-25 05:01:24

标签: visual-c++ c++-cli

我正在尝试将项目移至使用Entity Framework,但为了使其更有趣,该项目采用C ++ / CLR。​​

我有一个查询

ObjectQuery<myData::Facility^>^ facQ = myContext->FacilitySet;

我想要这样做

int n = facQ.Count()

但我不能,因为c ++不能识别使用C#语法的扩展方法。 facQ-&gt; Count()不起作用。

Using C# extension methods from managed C++/CLI显示了用户定义扩展的答案;但在这种情况下,扩展是.NET框架http://msdn.microsoft.com/en-us/library/bb349034%28v=vs.90%29.aspx的一部分。

有什么想法吗?

(我正在使用visual studio 2008和.NET 3.5)。

1 个答案:

答案 0 :(得分:2)

System :: Data :: Objects :: ObjectQuery实现IEnumerable<T>。您在C#中看到的Count()方法来自System :: Linq :: Enumerable类。

using namespace System::Linq;

int n = Enumerable::Count(facQ);

另请参阅this answer,其中显示了在该类中调用其他扩展方法的几个示例。