2008-10-21 42 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,那麼它找到了新記錄,如果沒有,它已經有該記錄。