Вы не передаете правильные аргументы методу Enumerable.Where
. Вы передаете список Employee
и метод, который работает на PayDetail
. Вы можете использовать
var query = Enumerable
.Where(emps.Select(e => e.PDetail), (Func<PayDetail, Boolean>)pred.Compile());
или более короткая версия
var query = emps.Select(e => e.PDetail)
.Where((Func<PayDetail, Boolean>)pred.Compile());
Что даст вам правильные PayDetails
, но не правильные Employee
s '. Я считаю, что вы действительно ищете:
var parameter = Expression.Parameter(typeof(Employee));
var where = Expression.NotEqual(Expression.Property(
Expression.Property(parameter, "PDetail"), "Salary"),
Expression.Constant(50000));
var pred = Expression.Lambda(where, parameter);
var query = emps.Where((Func<Employee, Boolean>)pred.Compile());