/ / Як отримати предикат не виразу з предиката виразу? - .net, дерева виразів

Як отримати не предикат вираження з виразу Predicate? - .net, expression-trees

Існує клас, який залежить від домену:

public class Account : IEntity
{
public bool IsActive { get; set; }
public DateTime ExpirationDate { get; set; }
}

і деякий предикат для отримання облікових записів із джерела даних:

Expression<Func<Account, bool>> predicate = a => a.IsActive == false && a.ExpirationDate < DateTime.Now;

List<Account> lst = new List<Account>();
lst.AsQueryable().Where(predicate);

Як я можу генерувати not_predicate з мого предиката? Де not_predicate:

!(a.IsActive == false && a.ExpirationDate < DateTime.Now)

Відповіді:

2 для відповіді № 1

Для цього можуть знадобитися незначні налаштування (я не на ПК) - але щось на зразок:

var not = Expression.Lambda<Func<Account,bool>>(
Expression.Not(predicate.Body), predicate.Parameters);