public void Delete <T>(Expression <Func <T, bool> > query, bool softCommit = false) { if (query == null) { throw new ArgumentNullException(nameof(query)); } var translator = new LinqToSolrQueryTranslator(this, typeof(T)); var q = Evaluator.PartialEval(query); var queryToStr = translator.Translate(BooleanVisitor.Process(q)); PerformDelete <T>(queryToStr, softCommit); }
internal ILinqToSolrService GetSolrQuery(Expression expression) { var elementType = TypeSystem.GetElementType(expression.Type); Service.ElementType = elementType; var qt = new LinqToSolrQueryTranslator(Service); #if PORTABLE || NETCORE expression = Evaluator.PartialEval(expression, e => e.NodeType != ExpressionType.Parameter && !typeof(IQueryable).GetTypeInfo().IsAssignableFrom(e.Type.GetTypeInfo())); #else expression = Evaluator.PartialEval(expression, e => e.NodeType != ExpressionType.Parameter && !typeof(IQueryable).IsAssignableFrom(e.Type)); #endif Service.CurrentQuery = Service.CurrentQuery ?? new LinqToSolrQuery(); Service.CurrentQuery.FilterUrl = qt.Translate(BooleanVisitor.Process(expression)); return(Service); }