Pass a lambda parameter to an include statement

Viewed 4380

I am using the System.Data.Entity namespace, so I can pass lambda expressions to the Linq Include method.

public ICollection<MyEntity> FindAll()
    {
        using (var ctx = new MyEntityContext())
        {
            return ctx.MyEntity.Include(x => x.SomeLazyLoadedValue).ToList();
        }
    }

When I'm using a Where statement in a different method, I can pass a parameter to it like so:

public ICollection<MyEntity> FindAllBy(Func<MyEntity, bool> criteria)
    {
        using (var ctx = new MyEntityContext())
        {
            return ctx.MyEntity.Where(criteria).ToList();
        }
    }

However, trying the same thing in an Include does not work:

public ICollection<MyEntity> FindAll(Func<MyEntity, bool> criteria)
    {
        using (var ctx = new MyEntityContext())
        {
            return ctx.MyEntity.Include(criteria).ToList();
        }
    }

If you try this, Visual Studio will complain that it

Cannot convert from 'System.Func<MyEntity, bool>' to 'string'

How do I pass a lambda to the Include method?

1 Answers
Related