public static IEnumerable <TSource> Execute <TSource, TCondition>(this IEnumerable <TSource> source, TCondition condition, IExecutor <TSource, TCondition> executor) { //if (!executor.ExeutePrecondition(condition)) //{ // return source; //} //return source.Where((x) => executor.ExecutePostcondition(x, condition)); return(!executor.ExeutePrecondition(condition) ? source : source.Where((x) => executor.ExecutePostcondition(x, condition))); }