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;
如何重构我的方法,使其 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;