我很难找到一种方法来使用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)
我已经尝试在堆栈中搜索。