了解表达式树和参数评估

了解表达式树和参数评估,第1张

了解表达式树和参数评估

我认为博客文章中的代码正是您所需要的:您所要做的就是使用valueSelector.Body而不是expression.Constant()将原始参数添加到生成的表达式中:

public static expression<Func<TElement, bool>>    BuildRangeexpression<TElement, TValue>(    expression<Func<TElement, TValue>> valueSelector,    IEnumerable<Tuple<TValue, TValue>> values){    var p = valueSelector.Parameters.Single();    var equals = values.Select(        tuple =>        expression.AndAlso( expression.GreaterThanOrEqual(     valueSelector.Body, expression.Constant(tuple.Item1)), expression.LessThanOrEqual(     valueSelector.Body, expression.Constant(tuple.Item2))));    var body = equals.Aggregate(expression.OrElse);    return expression.Lambda<Func<TElement, bool>>(body, p);}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5640389.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存