实体框架:如何在lambda表达式的条件下使用Include或Aggregate

时间:2014-11-29 04:13:14

标签: c# linq entity-framework

我很难找到一种方法来使用Include()与某种传入lambda表达式的Where条件。

会是这样的:

示例使用userRepository.Get(id, isActive: true, u=>u.UserRoles, u=>u.Group)

public T Get(long id, bool? isActive = true, params Expression<Func<T, object>>[] includes)
    {
        // Sample usage
        // userRepository.Get(id, true, u=>u.UserRoles, u=>u.Group)

        IQueryable<T> query = DataContext.Set<T>().Where(_ =>
            _.Id == id && (!isActive.HasValue || isActive.Value == _.IsActive));

        return
            includes.Aggregate(query, (current, includeProperty) => current.Include(includeProperty))
                .FirstOrDefault();
    }
}

问题

所有userRoles和IsActive = false的组都包含在结果集中。

期望:

我想找到一种方法来使用Include with Where条件。 所以它会这样:

userRepository.Get(id, true, u=>u.UserRoles.Where(ur => ur.IsActive == true, u=>u.Group)

我已经尝试在堆栈中搜索。

0 个答案:

没有答案