Make 方法 return Func<> 而不是 bool

Make Method return Func<> instead of bool

如何重构我的方法,使其 return 其 bool 表达式作为代码而不是直接作为 bool。我需要这个用于 EF Core 查询,因此将代码 returned 作为委托确实很重要。

private static bool AreNotNull(DateTime? dateTime1, DateTime? dateTime2) 
        => dateTime1 != null && dateTime2 != null;

你可以这样做:

private static Func<bool> AreNotNull(DateTime? dateTime1, DateTime? dateTime2)
    => () => dateTime1 != null && dateTime2 != null;

更新: 正如所指出的,您不需要每次调用该方法时都进行评估:

private static Func<bool> AreNotNull(DateTime? dateTime1, DateTime? dateTime2){
    var res = dateTime1 != null && dateTime2 != null
    return () => res;
}

此外,如果你想过滤一个 IQueryable (cf.),你必须这样做,例如想让数据库进行你需要的过滤 return Expression<Func<bool>>:

private static Expression<Func<bool>> AreNotNull(DateTime? dateTime1, DateTime? dateTime2)
    => () => dateTime1 != null && dateTime2 != null;