我的方法需要
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'。一个明确的
转换存在(您是否缺少演员表?)
如何修改调用以传递这两个参数?
最佳答案
您包含的表达式的类型应为Expression<Func<TEntity, object>>
-它们用于从要查询的实体中选择包含的导航属性:
params Expression<Func<TEntity, object>>[] included
还请记住,当您不将表达式传递给方法时,参数数组将不会为空,而是为空。因此您可以跳过null检查
IQueryable<TEntity> query = dbSet;
foreach(var path in included)
query = query.Include(path);
关于c# - 传递参数期间的显式转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21826080/