我的方法需要

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/

10-11 02:20