2014-02-17 67 views
2

我的方法中的顯式轉換需要同時傳遞參數

params Expression<Func<TEntity, IQueryable<TEntity>>>[] included 

作爲參數應用。後來又使用它們以這種方式:

IQueryable<TEntity> query = dbSet; 
    if(included!=null) 
    { 
     foreach(var z in included) 
     { 
      query.Include(z); 
     } 
    } 

但是我不能打電話,因爲在此調用拋出一個錯誤的此功能:

Get(w=>w.Device, w=>w.DeviceUsage)); 

錯誤10無法隱式轉換類型' magazyn.Models.Device'到 'System.Linq.IQueryable'。存在明確的 轉換(您是否缺少演員?)

如何修改呼叫以傳遞這兩個參數?

+0

您'Device'或'DeviceUsage'屬性不是'IQueryable '。 – Maarten

回答

3

你列入表達式應該是Expression<Func<TEntity, object>>型的 - 它們被用來從實體選擇包含導航財產要查詢:

params Expression<Func<TEntity, object>>[] included 

也請記住,當你不及格的表達你的方法,那麼params數組將不會爲空 - 它將是空的。因此,您可以跳過空檢查

IQueryable<TEntity> query = dbSet; 

foreach(var path in included) 
    query = query.Include(path); 
+0

謝謝但還有一個問題。 TProperty是什麼?我可以在我的項目中看到沒有這樣的類型 – szpic

+1

@szpic對不起,我的壞。它應該是非泛型的'object'類型,而不是通用的'TProperty'。另外不要忘記將包含的查詢分配回查詢 –