DynamicQueryable
DynamicQueryable copied to clipboard
Tokenizer exception when trying to use .Contains on a supplied IEnumerable
DynamicQueryable version
2.0.25
Steps to reproduce
The simplest sample code to reproduce:
var sample = new[] { 1, 2, 3, 4, 5 };
var result = sample.AsQueryable().Where($"i => @0.Contains(i)", sample).ToList();
Expected behavior
Execution and the desired items to be selected (originally you'd call the .Where on a DBSet)...
Actual behavior
Tokenizer fails on .Contains:
System.NullReferenceException
HResult=0x80004003
Message=Object reference not set to an instance of an object.
Source=Jokenizer.Net
StackTrace:
at Jokenizer.Net.ExtensionMethods.<>c__DisplayClass9_0.<GetExtensionMethod>b__0(MethodInfo m)
at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()
at System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable`1 source, Func`2 predicate, Boolean& found)
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source, Func`2 predicate)
at Jokenizer.Net.ExtensionMethods.GetExtensionMethod(Type forType, String name, Int32 parameterCount)
at Jokenizer.Net.TokenVisitor.GetMethod(Expression owner, String name, Int32 parameterCount)
at Jokenizer.Net.TokenVisitor.VisitCall(CallToken token, IEnumerable`1 parameters)
at Jokenizer.Net.TokenVisitor.Visit(Token token, IEnumerable`1 parameters)
at Jokenizer.Net.TokenVisitor.VisitLambda(LambdaToken token, IEnumerable`1 typeParameters, IEnumerable`1 parameters)
at Jokenizer.Net.TokenVisitor.Process(Token token, IEnumerable`1 typeParameters, IEnumerable`1 parameters)
at Jokenizer.Net.Evaluator.ToLambda(Token token, IEnumerable`1 typeParameters, IDictionary`2 variables, Object[] parameters)
at Jokenizer.Net.Evaluator.ToLambda(String token, IEnumerable`1 typeParameters, IDictionary`2 variables, Object[] parameters)
at System.Linq.Dynamic.DynamicQueryable.CreateLambda(IQueryable source, String method, String expression, Boolean generic, IDictionary`2 variables, Object[] values)
at System.Linq.Dynamic.DynamicQueryable.HandleLambda(IQueryable source, String method, String expression, Boolean generic, IDictionary`2 variables, Object[] values)
at System.Linq.Dynamic.DynamicQueryable.Where(IQueryable source, String predicate, IDictionary`2 variables, Object[] values)
at System.Linq.Dynamic.DynamicQueryable.Where[T](IQueryable`1 source, String predicate, IDictionary`2 variables, Object[] values)
at System.Linq.Dynamic.DynamicQueryable.Where[T](IQueryable`1 source, String predicate, Object[] values)
at TeamLead.Code.Services.Sync.GenericSync.Sync[TApiDto,TEntity,TId](String prefix, Int32 batchSize, Boolean shouldUpdate, Boolean shouldInsert, Boolean shouldDelete, SbApiFetchConfig`2 apiFetchConfig, DbFetchConfig`2 dbFetchConfig, Action`2 mapper) in C:\$_Work\SP.TeamLead\TeamLead\Code\Services\Sync\GenericSync.cs:line 87