2014-02-17 33 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'。另外不要忘记将包含的查询分配回查询 –