gpt4 book ai didi

c# - 将单个 Func 与 Where() 和继承一起使用

转载 作者:行者123 更新时间:2023-11-30 13:52:54 26 4
gpt4 key购买 nike

我正在尝试使用单个 Func<T,bool>处理类及其继承者的定义。这是我的:

Func<Job, bool> ValidJob =
j => !j.Deleted && !j.OnHold && j.PostDate <= DateTime.Now && j.ExpireDate > DateTime.Now;

public class JobExtended : Job { }

因此,鉴于此,以下工作:

IQueryable<Job> jobs = ...
jobs.Where(ValidJob);

但是,以下内容不会:

IQueryable<JobExtended> jobs = ...
jobs.Where(ValidJob);

我想知道是否可以有一个 Func<T,bool>在这种情况下,如果是这样,怎么办?我已尝试按照建议指定类型参数,但没有成功。

最佳答案

这将适用于 C# 4,其中委托(delegate)具有通用协变和逆变,但在此之前不会。但是,您可以从 C# 2 开始轻松使用现有委托(delegate):

jobs.Where(new Func<JobExtended, bool>(ValidJob));

关于c# - 将单个 Func<T,bool> 与 Where() 和继承一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1235718/

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