使方法返回 Func<>而不是布尔值



如何重构我的方法,使其以代码形式返回布尔表达式,而不是直接以布尔形式返回。我需要这个用于EFCore查询,所以代码作为委托返回非常重要。

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(参见(,如果你想要数据库进行过滤,你必须这样做,你需要返回Expression<Func<bool>>:

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

最新更新