gpt4 book ai didi

c# - 从 Func 返回 Func

转载 作者:行者123 更新时间:2023-11-30 22:33:29 28 4
gpt4 key购买 nike

我正在尝试使用 LinqKit 动态生成 linqtosql 查询.在将表达式发送到 LinqKit 之前,我想检查要为预测添加的字段。所以我想出了一些想法,比如

 Expression<Func<TResult, bool>> GetPrediction<TKey>
(Expression<Func<TResult, TKey>> selector, TResult input, object value)
{
if(typeof(TKey) == typeof(string))
{
return selector.Invoke(input) == value; //Not working, how to covert here?
}
Throw new Exception("Type not supported");
}

我卡在了第 5 行,我应该在那里生成一个表达式 <Func<TResult, bool>>并返回。我知道这是可能的,但很难获得“点击”

最佳答案

我想你想要这样的东西:

public static Expression<Func<TResult, bool>> GetPredicate<TKey>
(Expression<Func<TResult, TKey>> selector, TResult input, object value)
{
// Note: Move "early out" here so that bulk of method is less deeply nested.
// Really? Why make this generic in TKey then?
if (typeof(TKey) != typeof(string))
{
throw new Exception("Type not supported");
}

var parameter = Expression.Parameter("input");
var invocation = Expression.Invoke(selector, input);
var constant = Expression.Constant(value);
var equality = Expression.Equal(invocation, constant);
return Expression.Lambda<Func<TResult, bool>>(equality, parameter);
}

请注意,我不太确定将使用哪种相等性 - 它完全有可能使用引用相等性操作,而我怀疑您想要 平等。您必须尝试一下才能看到,由于字符串驻留,在测试中要小心。

关于c# - 从 Func 返回 Func,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8262116/

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