Tôi đang tìm cách loại bỏ cụm từ được sử dụng để lọc các chuỗi IQueryable
. một cái gì đóC# phủ nhận biểu thức
Vì vậy, tôi đã có như:
Expression<Func<T, bool>> expression = (x => true);
Bây giờ tôi muốn tạo cụm từ đó sẽ dẫn đến năng suất (x => false)
- vì vậy tôi về cơ bản muốn phủ nhận expression
.
Các phương pháp làm việc tôi đã tìm thấy bản thân mình làm việc như thế này:
var negatedExpression =
Expression.Lambda<Func<T, bool>> (Expression.Not(expression.Body),
expression.Parameters[0])));
Nhưng tôi gần như chắc chắn có một cách tốt hơn - bạn có thể giúp tôi? (giống như Not(expression)
, có thể).
Vâng, tôi biết cách phủ nhận một tuyên bố thành một phương pháp 'Không', nhưng tôi thực sự đang tìm kiếm một cách dễ dàng để thực sự phủ định * (nó nhìn tôi gọi là 'Expression.Lambda. Blablabla' là một overkill rất lớn). * –
Cây biểu hiện là bất biến, vì vậy bạn phải tạo ra một lambda mới. –