传递参数时的显式转换

时间:2014-02-17 10:09:17

标签: c# linq entity-framework

我的方法需要

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

as parametres。然后以这种方式使用它们:

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'。一个明确的   存在转换(你错过了演员吗?)

如何修改调用以传递这两个参数?

1 个答案:

答案 0 :(得分:3)

您所包含的表达式应为Expression<Func<TEntity, object>>类型 - 它们用于从您要查询的实体中选择包含的导航属性

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

另外请记住,当你没有将表达式传递给你的方法时,params数组不会为null - 它将为空。所以你可以跳过空检查

IQueryable<TEntity> query = dbSet;

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