2

我正在尝试将项目转移到使用实体框架,但为了让它更有趣,该项目使用 C++/CLR。

我有一个查询

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

我想这样做

int n = facQ.Count()

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

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

有任何想法吗?

(我使用的是 Visual Studio 2008 和 .NET 3.5)。

4

1 回答 1

2

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

using namespace System::Linq;

int n = Enumerable::Count(facQ);

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

于 2012-07-25T17:21:54.280 回答