相关疑难解决方法(0)

有没有办法否定谓词?

我想做这样的事情:

List<SomeClass> list1 = ...
List<SomeClass> list2 = ...
Predicate<SomeClass> condition = ...

...

list2.RemoveAll (!condition);

...

list2.AddRange (list1.FindAll (condition));
Run Code Online (Sandbox Code Playgroud)

但是,这会导致编译器错误,因为!无法应用Predicate<SomeClass>.有没有办法做到这一点?

.net c# linq predicate

24
推荐指数
2
解决办法
6167
查看次数

Linq:创建表达式的逻辑逆

我想创建一个方法来接受Expression<Func<T, bool>>并创建它的逻辑逆(即它将返回它将返回的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));
}
Run Code Online (Sandbox Code Playgroud)

这编译很好但在调用时会抛出以下异常:

Test method Tests.Common.Unit.LinqPredicateBuilderTests.CanInverseAPredicate threw exception: 
System.ArgumentException: Incorrect number of parameters supplied for lambda declaration
Run Code Online (Sandbox Code Playgroud)

我不知道我在做什么.任何人都可以填补空白吗?

c# linq expression-trees

9
推荐指数
1
解决办法
2061
查看次数

标签 统计

c# ×2

linq ×2

.net ×1

expression-trees ×1

predicate ×1