gpt4 book ai didi

linq - Expression.IsFalse 未知?

转载 作者:行者123 更新时间:2023-12-04 15:26:41 25 4
gpt4 key购买 nike

当我最终尝试运行查询时出现以下错误

Unknown LINQ expression of type 'IsFalse'

这是代码

private static IQueryable<T> QueryMethod<T>(
IQueryable<T> query,
QueryableRequestMessage.WhereClause.Rule rule,
Type type,
string methodName,
Expression property,
Expression value,
string op,
ParameterExpression parameter
) where T : class
{
var methodInfo = type.GetMethod(methodName, new[] { type });
var call = Expression.Call(property, methodInfo, value);
var expression = rule.Op.Equals(op)
? Expression.Lambda<Func<T, bool>>(call, parameter)
: Expression.Lambda<Func<T, bool>>(Expression.IsFalse(call), parameter);
query = query.Where(expression);
return query;
}

重要的变量有以下值

query: an IQueryable that I am building up
type: String
methodName: "EndsWith"
rule.Op: "ne" //Not Ends With
op: "ew"
value: "somestring"

基本上,如果 op 和 rule.Op 相等,它只运行 methodName (EndsWith) 并相应地进行过滤。但是,如果它们不同,我想否定结果。

最佳答案

看来你并没有做错什么;您的 LINQ 提供程序根本不知道如何处理 Expression.IsFalse 返回的表达式树实例,因此它会提示。

您可以尝试自己手动构建“is false”表达式树,这应该可行:

Expression.Lambda<Func<T, bool>>(
Expression.Equal(call, Expression.Constant(false)),
parameter)

关于linq - Expression.IsFalse 未知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14835621/

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