我有以下过滤器:
Expression<Func<Employee, bool>> fromDateFilterFourDays = z => EntityFunctions.TruncateTime(z.FiringDate) >= EntityFunctions.TruncateTime(DateTime.Now.AddDays(-4));
Expression<Func<Employee, bool>> fromDateFilterSixDays = z => EntityFunctions.TruncateTime(z.FiringDate) >= EntityFunctions.TruncateTime(DateTime.Now.AddDays(-6));
我怎样才能使这个过滤器的代表?
我不想为每个给定的数字创建一个变量,即四天或六天。
最佳答案
我的理解是您要:
为代表输入两个参数,即雇员和天数。
将该表达式编译为委托。
第一部分可以通过将天添加到参数列表中来完成:
Expression<Func<Employee, int, bool>> fromDateFilter = (z, n) => EntityFunctions.TruncateTime(z.FiringDate) >= EntityFunctions.TruncateTime(DateTime.Now.AddDays(n));
第二种通过使用Compile方法:
var del = fromDateFilter.Compile();
// use it
del(employee, -4);