Как получить следующее выражение, используя ExpressenTree? - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь создать следующее выражение

Context.Contacs.Where(c => Context.ContactIdentifiers.Any(ci => ci.ContactId == c.Id && ci.phone = "1"));

Я пытался сделать следующее, но вылетает исключение.

var joinExpressionParmater = Expression.Parameter(filterRule.Instance, suffix + "1");
var prop = Expression.Property(joinExpressionParmater, filterRule.ConditionField);
var joinExpressionBody = Expression.Equal(
                prop,
                ToConstantExpressionOfType(TryCastFieldValueType(filter.Value, AllowTypes[filter.Type]), AllowTypes[filter.Type]));

var joinExpression = Expression.Lambda(joinExpressionBody, joinExpressionParmater);

var compiledMethod = DbContextSetMethod.MakeGenericMethod(filterRule.Instance);
var dbSet = compiledMethod.Invoke(Context, null);

var call = Expression.Call(
                CollectionAny2.MakeGenericMethod(filterRule.Instance), Expression.Parameter(dbSet.GetType(), dbSet.GetType().Name), joinExpression);

Исключение составляет

Processing of the LINQ expression 'InternalDbSet`1
.Any(001 => 001.Value == "1")' by 'NavigationExpandingExpressionVisitor' failed. 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...