gpt4 book ai didi

c# - 转换表情

转载 作者:行者123 更新时间:2023-11-30 19:35:51 25 4
gpt4 key购买 nike

我有以下内容:

class Base
class Derived : Base
IQueryable<Derived> queryable = ???
Expression<Func<Base, bool>> filter = ???

我想用表达式过滤可查询的内容,并取回 IQueryable<Derived> .

然而,Expression是不变的。这意味着 queryable.Where(filter)被推断为 Where(this IQueryable<Base>, Expression<Func<Base, bool>>) ,并返回 IQueryable<Base>而不是 IQueryable<Derived> .

C# 不允许 filter转换到Expression<Func<Derived, bool>> , 以及 IQueryable<Base> 的 Actor 阵容由 Where 返回至 IQueryable<Derived>在运行时失败。

解决这个问题的最佳方法是什么?

最佳答案

实用的修复是:

var result = queryable.Where(filter).Cast<Derived>();

您也可以通过重写表达式树来实现,但是……这似乎不值得。但它有效:

var typed = Expression.Lambda<Func<Derived, bool>>(
filter.Body, filter.Parameters);
var result = queryable.Where(typed); // IQueryable<Derived>

关于c# - 转换表情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51378694/

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