internal static Filter PrependToken(Filter filter, QueryToken prefix) { if (filter is FilterCondition fc) { return(new FilterCondition(prefix.Append(fc.Token), fc.Operation, fc.Value)); } if (filter is FilterGroup fg) { return(new FilterGroup(fg.GroupOperation, fg.Token == null ? null : prefix.Append(fg.Token), fg.Filters.Select(f => PrependToken(f, prefix)).ToList())); } throw new UnexpectedValueException(filter); }
private static Filter ToFilterAppend(QueryFilterEmbedded f, QueryToken mainQueryKey) { QueryToken token = mainQueryKey.Append(f.Token.Token); return(new Filter(token, f.Operation, FilterValueConverter.Parse(f.ValueString, token.Type, f.Operation.IsList()))); }