gpt4 book ai didi

c# - 将 lambda 表达式转换为派生类型

转载 作者:太空狗 更新时间:2023-10-29 20:24:31 25 4
gpt4 key购买 nike

我需要一点魔法。我相信我正在尝试做的事情是有道理的,但如果我没有发现计划有问题,那么我也欢迎说明原因。

我有一个表情

Expression<Func<Entity, bool>>

我想转换/转换甚至创建一个全新的表达式:

Expression<Func<Derived, bool>>

这被用作 EF 过滤器查询,作为参数传递给存储库方法。存储库返回一个可枚举的实体,因此我可以很容易地使用协方差,但我想在返回查询之前以其派生状态对查询进行一些后处理。

在我看来,EF 必须在内部自行执行此操作,但我希望能够运行我的查询,以便结果的类型是派生类型而不是实体。

感谢您的帮助。

最佳答案

Expression 级别上工作,您可以构建一个具有 Derived 类型作为参数的新表达式:

var entityExpr = (Expression<Func<Entity, bool>>)(e => e.Str == "");
var derivedExpr = Expression.Lambda<Func<Derived, bool>>(entityExpr.Body, entityExpr.Parameters);

关于c# - 将 lambda 表达式转换为派生类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15829488/

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