How to pass a param list of PropertyExpression

905 Views Asked by At

I have a generic repository in which I'm trying to include a function that accepts a variable list of child tables to eagerly load. The function looks thus:

    public IQueryable<T> FindBy(Expression<Func<T, bool>> predicate, params Expression<Func<T, object>>[] includeEntities)
    {
        IQueryable<T> query = this._dbSet.Where(e => !e.Deleted).Where(predicate);
        foreach (var entity in includeEntities)
        {
            query.Include(entity);
        }
        return query;
    }

It works but I'm concerned about the object reference.

Using the function thus:

var foundEntities = Repository.Entities.FindBy(i => i.Id == targetId, i => i.Orders, i => i.Invoices);

The params passed in the includeEntites array are of type System.Linq.Expressions.PropertyExpression which is unfortunately an internal class so I can't make the function signature:

public IQueryable<T> FindBy(Expression<Func<T, bool>> predicate, params Expression<Func<T, System.Linq.Expressions.PropertyExpression>>[] includeEntities)

as I'd like. Any thoughts?

0

There are 0 best solutions below