/// <exclude /> public S Execute <S>(Expression expression) { var visitor = new StoreIdFilterQueryableExpressionVisitor(); visitor.Visit(_currentExpression); if (visitor.FoundStoreId == _storeId) { var sourceChangingVisitor = new StoreIdFilterQueryableChangeSourceExpressionVisitor(); Expression newExpression = sourceChangingVisitor.Visit(expression); return(_originalQueryable.Provider.Execute <S>(newExpression)); } else { List <T> emptyList = new List <T>(); var sourceChangingVisitor = new StoreIdFilterQueryableChangeSourceExpressionVisitor(emptyList.AsQueryable().Expression); Expression newExpression = sourceChangingVisitor.Visit(expression); return(emptyList.AsQueryable().Provider.Execute <S>(newExpression)); } }
/// <exclude /> public IQueryable <S> CreateQuery <S>(Expression expression) { var visitor = new StoreIdFilterQueryableChangeSourceExpressionVisitor(); Expression newExpression = visitor.Visit(expression); IQueryable <S> newOriginalQueryable = _originalQueryable.Provider.CreateQuery <S>(newExpression); return(new StoreIdFilterQueryable <S>(newOriginalQueryable, _storeId, expression)); }