Linq: Создать логическое обратное выражение

Я хотел бы создать метод, который принимает Expression > и создает его логическую инверсию (то есть возвращает false , где он вернул бы true , и наоборот. Это намного сложнее, чем я думал. Вот где я задумал:

public static Expression<Func<T, bool>> Not<T>(this Expression<Func<T, bool>> expression)
{
  return Expression.Lambda<Func<T, bool>>(Expression.Not(expression.Body));
}

Компилируется нормально, но при вызове выдает следующее исключение :

Test method Tests.Common.Unit.LinqPredicateBuilderTests.CanInverseAPredicate threw exception: 
System.ArgumentException: Incorrect number of parameters supplied for lambda declaration

Понятия не имею, что делаю. Может ли кто-нибудь заполнить пробелы?

9
задан Matt Kocaj 19 February 2013 в 02:09
поделиться