public static BoolMarker <T> HasNo <T, U>(this BoolMarker <T> marker, Func <T, IEnumerable <U> > props) { if (marker.PendingOp == BoolMarker <T> .Operation.And && !marker.Result) { return(marker); } return(new BoolMarker <T>(!props(marker.Self).Any(), marker.Self)); }
public static BoolMarker <T> HasNo <T, U>(this BoolMarker <T> marker, Func <T, IEnumerable <U> > props) => (marker.PendingOp == BoolMarker <T> .Operation.And && !marker.Result) ? marker // we can simply return the current marker because it already failed (and with the first one equals to false) : new BoolMarker <T>(!props(marker.Self).Any(), marker.Self);