gpt4 book ai didi

c# - 反转表达式>

转载 作者:太空狗 更新时间:2023-10-30 00:11:17 25 4
gpt4 key购买 nike

我正在编写必须反转 bool 的表达式扩展方法-类型化的 lambda 表达式。

这是我正在做的:

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

但这引发了一个异常(exception),即unary operator is NOT not defined for the type Func<int,bool> .我也试过这个:

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

但是得到这个:Incorrent number of parameters supplied for lambda declaration .

最佳答案

幸运的是,这是这样解决的:

public static Expression<Func<T, bool>> Inverse<T>(this Expression<Func<T, bool>> e)
{
return Expression.Lambda<Func<T, bool>>(Expression.Not(e.Body), e.Parameters[0]);
}

表示 .Lambda<>方法需要一个参数,我们需要从源表达式传递给它。

关于c# - 反转表达式<Func<T, bool>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13911775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com