c# - Fetching items where nested collection contains item(s) form another collection -


i'm trying fetch item it's nested collection contains item or multiple items collection. if first enumerate collection , execute in-memory .where() filter, expected collection.

var filtertagids = new[] { 1, 2, 3 };  var works = base.dbset     .include(p => p.company)         .theninclude(p => p.companytags)     .tolist()     .where(p => p.company.companytags.any(q => filtertagids.contains(q.tagid)))     .tolist(); 

however if try without enumeration (i on db level), exception.

var doesnotwork = base.dbset     .include(p => p.company)         .theninclude(p => p.companytag)     .where(p => p.company.companytags.any(q => filtertagids.contains(q.tagid)))     .tolist(); 

this exception i'm getting:

{"variable 't0' of type 'microsoft.data.entity.query.entityquerymodelvisitor+transparentidentifier`2[microsoft.data.entity.storage.valuebuffer,microsoft.data.entity.storage.valuebuffer]' referenced scope '', not defined"}     data: {system.collections.listdictionaryinternal}     hresult: -2146233079     helplink: null     innerexception: null     message: "variable 't0' of type 'microsoft.data.entity.query.entityquerymodelvisitor+transparentidentifier`2[microsoft.data.entity.storage.valuebuffer,microsoft.data.entity.storage.valuebuffer]' referenced scope '', not defined"     source: "system.core"     stacktrace: "   @ system.linq.expressions.compiler.variablebinder.reference(parameterexpression node, variablestoragekind storage)\r\n   @ system.linq.expressions.compiler.variablebinder.visitparameter(parameterexpression node)\r\n   @ system.linq.expressions.parameterexpression.accept(expressionvisitor visitor)\r\n   @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n   @ system.linq.expressions.expressionvisitor.visitmember(memberexpression node)\r\n   @ system.linq.expressions.memberexpression.accept(expressionvisitor visitor)\r\n   @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n   @ system.linq.expressions.expressionvisitor.visitmethodcall(methodcallexpression node)\r\n   @ system.linq.expressions.methodcallexpression.accept(expressionvisitor visitor)\r\n   @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n   @ system.linq.expressions.compiler.variablebinder.visitunary(unaryexpression node)\r\n   @ system.linq.expressions.unaryex pression.accept(expressionvisitor visitor)\r\n   @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n   @ system.linq.expressions.expressionvisitor.visit(readonlycollection`1 nodes)\r\n   @ system.linq.expressions.compiler.variablebinder.visitlambda[t](expression`1 node)\r\n   @ system.linq.expressions.expression`1.accept(expressionvisitor visitor)\r\n   @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n   @ system.linq.expressions.expressionvisitor.visitarguments(iargumentprovider nodes)\r\n   @ system.linq.expressions.expressionvisitor.visitmethodcall(methodcallexpression node)\r\n   @ system.linq.expressions.methodcallexpression.accept(expressionvisitor visitor)\r\n   @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n   @ system.linq.expressions.expressionvisitor.visitarguments(iargumentprovider nodes)\r\n   @ system.linq.expressions.expressionvisitor.visitmethodcall(methodcallexpression node)\r\n   @ system.linq.expressions.methodcallexp ression.accept(expressionvisitor visitor)\r\n   @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n   @ system.linq.expressions.expressionvisitor.visitarguments(iargumentprovider nodes)\r\n   @ system.linq.expressions.expressionvisitor.visitmethodcall(methodcallexpression node)\r\n   @ system.linq.expressions.methodcallexpression.accept(expressionvisitor visitor)\r\n   @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n   @ system.linq.expressions.expressionvisitor.visitarguments(iargumentprovider nodes)\r\n   @ system.linq.expressions.expressionvisitor.visitmethodcall(methodcallexpression node)\r\n   @ system.linq.expressions.methodcallexpression.accept(expressionvisitor visitor)\r\n   @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n   @ system.linq.expressions.expressionvisitor.visit(readonlycollection`1 nodes)\r\n   @ system.linq.expressions.compiler.variablebinder.visitlambda[t](expression`1 node)\r\n   @ system.linq.expressions.expres sion`1.accept(expressionvisitor visitor)\r\n   @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n   @ system.linq.expressions.expressionvisitor.visitarguments(iargumentprovider nodes)\r\n   @ system.linq.expressions.expressionvisitor.visitmethodcall(methodcallexpression node)\r\n   @ system.linq.expressions.methodcallexpression.accept(expressionvisitor visitor)\r\n   @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n   @ system.linq.expressions.expressionvisitor.visitarguments(iargumentprovider nodes)\r\n   @ system.linq.expressions.expressionvisitor.visitmethodcall(methodcallexpression node)\r\n   @ system.linq.expressions.methodcallexpression.accept(expressionvisitor visitor)\r\n   @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n   @ system.linq.expressions.expressionvisitor.visitarguments(iargumentprovider nodes)\r\n   @ system.linq.expressions.expressionvisitor.visitmethodcall(methodcallexpression node)\r\n   @ system.linq.expression s.methodcallexpression.accept(expressionvisitor visitor)\r\n   @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n   @ system.linq.expressions.expressionvisitor.visit(readonlycollection`1 nodes)\r\n   @ system.linq.expressions.compiler.variablebinder.visitlambda[t](expression`1 node)\r\n   @ system.linq.expressions.expression`1.accept(expressionvisitor visitor)\r\n   @ system.linq.expressions.expressionvisitor.visit(expression node)\r\n   @ system.linq.expressions.compiler.variablebinder.bind(lambdaexpression lambda)\r\n   @ system.linq.expressions.compiler.lambdacompiler.compile(lambdaexpression lambda, debuginfogenerator debuginfogenerator)\r\n   @ system.linq.expressions.expression`1.compile()\r\n   @ microsoft.data.entity.query.entityquerymodelvisitor.createexecutorlambda[tresults]()\r\n   @ microsoft.data.entity.query.entityquerymodelvisitor.createqueryexecutor[tresult](querymodel querymodel)\r\n   @ microsoft.data.entity.storage.database.compilequery[tresult](querymodel quer ymodel)\r\n--- end of stack trace previous location exception thrown ---\r\n   @ system.runtime.exceptionservices.exceptiondispatchinfo.throw()\r\n   @ microsoft.data.entity.query.internal.querycompiler.<>c__displayclass18_0`1.<compilequery>b__0()\r\n   @ microsoft.data.entity.query.internal.compiledquerycache.getoraddquery[tresult](object cachekey, func`1 compiler)\r\n   @ microsoft.data.entity.query.internal.querycompiler.compilequery[tresult](expression query)\r\n   @ microsoft.data.entity.query.internal.querycompiler.execute[tresult](expression query)\r\n   @ microsoft.data.entity.query.internal.entityqueryprovider.execute[tresult](expression expression)\r\n   @ remotion.linq.queryablebase`1.getenumerator()\r\n   @ system.collections.generic.list`1..ctor(ienumerable`1 collection)\r\n   @ system.linq.enumerable.tolist[tsource](ienumerable`1 source)\r\n   @ myproject.dal.repository.locationrepository.getcompanylocations(companymarkersfilter filter) in d:\\projects\\myproject\\src\\komp anio.dal\\repository\\locationrepository.cs:line 24"     targetsite: {void reference(system.linq.expressions.parameterexpression, system.linq.expressions.compiler.variablestoragekind)} 

is i'm looking doable in ef? perhaps it's issue ef-core? or doing wrong? thanks.

https://github.com/aspnet/entityframework/issues/4596

known issue, set fixed release version of ef.


Comments

Popular posts from this blog

routing - AngularJS State management ->load multiple states in one page -

python - GRASS parser() error -

Swift game error message -