2008-10-21 66 views
1

我建立一个的ObjectQuery这样的:如何计算ObjectQuery返回的对象数量<T>?

 string query = "select value obj from Entities.Class as obj " + 
         "where obj.Property = @Value"; 

     ObjectQuery<Class> oQuery = new ObjectQuery<Class>(query, EntityContext.Instance); 
     oQuery.Parameters.Add(new ObjectParameter("Value", someVariable)); 

我现在可以分配这个对象作为一个控制一个数据源,或者用foreach循环迭代,甚至强制物化到一个列表,不过,我可以我计算将返回的对象的数量,而不强制实现?

我是否需要创建一个将执行count()的伴随查询,或者是否有一个函数可以为我做些什么?

谢谢。

回答

3

ObjectQuery<T>实现IQueryable<T>,所以不能单纯使用扩展方法:

int count = oQuery.Count(); 

会发生什么事,如果你执行这个?我会期望整体查询只是做一个Count()...(不是我已经做了很多EF ...)。

+0

这对我有用,但我有暴露Count()方法的时间。如果有人遇到ObjectQuery.Count()不可用的情况,请不要忘记将System.Linq包含到类中。这让我停留了一段时间,因为我之前删除了未使用的语句,而我的ObjectQuery对象的Intellisense选项是可用的子集。 – 2010-12-24 01:14:29

1

ObjectQuery <T>类实现IEnumerable接口,它支持Count()方法。

你从中得到了什么?

int count = oQuery.Count(); 
+0

请注意,Enumerable.Count()将*强制数据加载;您需要使用Queryable.Count()来获取可组合行为。 – 2008-10-21 12:18:42

0

如果计数小于1,那么它找到了新记录,如果没有,它已经有该记录。

相关问题