Я пытаюсь динамически строить дерево выражений, которое эффективно запрашивает источник данных, используя запрос. Запрос я пытаюсь повторить этоДерево выражений вложенных weshes
Countries.Where(y => Countries
.Where(x =>
x.CountryLanguage.Any(b => b.CountryID == 73) &&
x.CountryLanguage.Any(b => b.CountryID == 150))
.Select(z => z.ShortCode)
.Contains(y.ShortCode))
Я перепробовал много способов сделать это, но это моя последняя попытка:
public void AddContainsWhereClause(IQueryable<T> objectSet, string predicateIdentifier)
{
ParameterExpression pe = Expression.Parameter(typeof(T), predicateIdentifier);
Expression expInner = Expression.Call(
typeof(Queryable),
"Where",
new Type[] { typeof(T) },
objectSet.Expression,
Expression.Lambda<Func<T, bool>>(rootExperession, resultExpression));
Expression expOuter = Expression.Call(
typeof(Queryable),
"Where",
new Type[] { typeof(T) },
objectSet.Expression,
Expression.Lambda<Func<T, bool>>(expInner, pe));
}
NB rootExpression является:
x => x.CountryLanguage.Any(b => b.CountryID == 73) &&
x.CountryLanguage.Any(b => b.CountryID == 150)
Но это возвращает:
[ApplicationFramework.LIN QBuilder.tests.Country] 'не может использоваться для возвращаемого типа' System.Boolean '
Кто-нибудь знает, что я делаю неправильно?