/// <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 IEnumerator <T> GetEnumerator() { var visitor = new StoreIdFilterQueryableExpressionVisitor(); visitor.Visit(_currentExpression); if (visitor.FoundStoreId == null) { throw new InvalidOperationException("Missing storeId test found in where"); } if (visitor.FoundStoreId != _storeId) { return(new List <T>().GetEnumerator()); } return(FilterByStoreId(_originalQueryable).GetEnumerator()); }